text:
YOLO accelerated with FINN

Dear FINN developers,
I am trying to accelerate YOLO network (this one: https://github.com/xiaohu2015/DeepLearning_tutorials/blob/master/ObjectDetections/yolo/yolo_tf.py) on PYNQ FPGA to achieve real-time object classfication.
I found FINN framework and very excited about it. However, I am not sure how exactly I can implement the accelerator and if it is possible with FINN for the mentioned network.
Could you please suggest the way I can tackle this?
P.S. I don't have much experience in working with NN, so if you could answer it in simple terms, I very appreciate this.
Thanks in advance,
Aliaksei

Hi,
Yolo networks are not supported in this generation of FINN
Ken

source: gharchive/issue

repo: Xilinx/FINN

license_type: permissive

license_source: github-api


text:
"exec: "/etc/login.sh": permission denied": unknown

(base) sm@dl4028:/etc$ sudo docker start f03db547386b
Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "/etc/login.sh": permission denied": unknown
Error: failed to start containers: f03db547386b

Root is not required to run Docker containers - just make sure your user account (e.g. sm) is added to the docker group on the host.
Could you try without sudo?

Root is not required to run Docker containers - just make sure your user account (e.g. sm) is added to the docker group on the host.
Could you try without sudo?

Hi @York1996OutLook
Since we haven't received your reply for a long time, we assume you have solved this issue and I'm going to close it. If you still have any questions, please feel free to reopen it. Thank you very much.

authors: York1996OutLook hanxue qianglin-xlnx

repo: Xilinx/Vitis-AI


text:
Missing model annotations in TF2 quantizer

Platform: docker.io/xilinx/vitis-ai created on 2021-10-08
Environment: vitis-ai-tensorflow2
I believe this is two separate bugs, but they're both included here as I can split them out if the mods prefer.
I'm using the models below, basically:
dense (None, 37)
dropout (None, 20)
dense_1 (None, 20)
dropout_1 (None, 20)
dense_2 (None, 20)
dropout_2 (None, 10)
dense_3 (None, 10)

Removing Dropout layers to avoid bug with remove_dropout config transformation
dense (None, 37)
dense_1 (None, 20)
dense_2 (None, 20)
dense_3 (None, 10)

[VAI INFO] Start CrossLayerEqualization...
10/10 [==============================] - 0s 21ms/step
[VAI INFO] CrossLayerEqualization Done.

With the commands here:
from tensorflow_model_optimization.quantization.keras import vitis_quantize
quantizer = vitis_quantize.VitisQuantizer(model)
quantized_model = quantizer.quantize_model(calib_dataset=ds)

The quantizer process involves taking a float model, optimizing the float model through a series of transformations, and then quantizing the model. In general, this process involves applying a series of transforms to the model in preparation for quantization using one of the provided pipelines. In our case, this is the 8bit pipeline as in this file: pipeline link
  def optimize_model(self, configs={}, **kwargs):
    """Get optimized model.

    Available configs:
       * remove_dropout=True
       * fold_conv_bn=True
       * fold_bn=True
       * replace_relu6=False
       * include_cle=True
       * cle_steps=5
    """
})

If our model includes any Dropout layers, this process raises a size mismatch error, likely due to a bug in the transformation for remove_dropout. If this config is removed, then a model with Dropout layers will be "optimized", or we can rebuild our model with no Dropout layers. This allows us to complete the optimize_model step of the quantize_model method.
At this point, the quantizer should have several internal members populated-- self._optimized_model, self._layer_metadata, and self._candidate_layers. Unfortunately, self._layer_metadata and self._candidate_layers never get populated. That's only the first problem, as the quantize_model method then calls the quantize_apply method of vitis_quantize.py
Note that in the docstring of this method, it clearly states we need a model passed in that has its layers wrapped by annotations provided by quantize_annotate.
def quantize_apply(model, candidate_layers, layer_metadata, quantize_strategy,
                   mode):
  """Quantize a `tf.keras` model that has been annotated for quantization.
...
  Args:
    model: A `tf.keras` Sequential or Functional model which has been annotated
      with `quantize_annotate`. It can have pre-trained weights.

As far as I can tell, this procedure is never called for the pipeline used by quantizer, leaving us with an object with no annotated layers (example of proper annotation). I believe it should be possible to run optimize_model and then annotate the layers correctly, as well as getting the proper metadata variables filled, but I am not exactly sure yet at what step this is failing at. it was either completely forgotten, or somewhere deep down in the bowels of the ModelTransformer and some transformations.
This leads me to the exception below as a keras.layer doesn't have a name attribute, while a "properly" annotated layer wrapped in a QuantizeAnnotate wrapper does.
/workspace/tensorflow_model_optimization/python/core/quantization/keras/vitis/eight_bit/vitis_8bit_quantize_transforms.py in replacement(self, match_layer)
    519   def replacement(self, match_layer):
    520     act_layer_node = match_layer
--> 521     act_layer_name = act_layer_node.layer['name']
    522
    523     vitis_sigmoid_layer = vitis_activation.VitisSigmoid(name=act_layer_name +

KeyError: 'name'

This has led to a Xilinx support forum post that I'm keeping up to date as well.

After working with our FAE, a workaround is available by running a sed command:
sed -i "s/act_layer_node.layer\['name'\]/act_layer_node.layer\['config'\]\['name'\]/g" /opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/eight_bit/vitis_8bit_quantize_transforms.py

This led to finding an additional bug with ReLU activation functions where quantize_model had to be changed due to an issue with an internal transformer:
FROM: quantized_model = quantizer.quantize_model(calib_dataset=ds)
  TO: quantized_model = quantizer.quantize_model(calib_dataset=ds, separate_conv_act=False)

Both the Dropout removal and the other issues look to be resolved in the 2.0 release. Closing.

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?

Tensorflow addon LAMB is used I have attached my preprocess script and dataset
nputs = [dataset_rx,dataset_tx,dataset_ch]
import tensorflow as tf  # pylint: disable=g-bad-import-orde
from tensorflow import keras
from deep_rx_model import BitErrorRate
from deep_rx_model import binary_sigmoid_cross_entropy
import tensorflow_addons as tfa
load model graph without compiling it
model = tf.keras.models.load_model('deep_rx.h5', compile=False)
# recompile model with customization that were used during training

float_model=model.compile(optimizer=tfa.optimizers.LAMB(), loss=binary_sigmoid_cross_entropy,metrics=[BitErrorRate()])
model.predict(inputs)
from tensorflow_model_optimization.quantization.keras import vitis_quantize
quantizer = vitis_quantize.VitisQuantizer(model)
quantized_model = quantizer.quantize_model(calib_dataset=inputs)

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?
But it gives me the issue on  self._create_optimized_model()

File "test_model.py", line 50, in
quantized_model = quantizer.quantize_model(calib_dataset=test_generator)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 566, in quantize_model
self.optimize_model()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 454, in optimize_model
self._create_optimized_model()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 228, in _create_optimized_model
quantize_strategy=self._quantize_strategy)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 700, in create_optimize_model
model, candidate_layers, layer_metadata)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/eight_bit/vitis_8bit_transforms_pipeline.py", line 92, in apply
layer_metadata)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/eight_bit/vitis_8bit_transforms_pipeline.py", line 50, in _apply_availables
layer_metadata).recursive_transform()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/graph_transformations/model_transformer.py", line 738, in recursive_transform
self.layer_metadata).transform()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/graph_transformations/model_transformer.py", line 704, in transform
self._set_layer_weights(layer, weights_map)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/graph_transformations/model_transformer.py", line 593, in _set_layer_weights
K.batch_set_value(weight_value_tuples)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py", line 206, in wrapper
return target(*args, **kwargs)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/backend.py", line 3775, in batch_set_value
x.assign(np.asarray(value, dtype=dtype_numpy(x)))
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 902, in assign
(tensor_name, self._shape, value_tensor.shape))
ValueError: Cannot assign to variable BN-0-0/depthwise_kernel:0 due to variable shape (1, 1, 64, 1) and value shape (3, 3, 64, 1) are incompatible

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?

It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument.
category=CustomMaskWarning)
[VAI INFO] Update custom_layer_type: []

Again -- this should be another issue. Also your dataset is (3) npz files, but I don't see a model anywhere, meaning that one won't be able to diagnose it as we don't know the model layers involved.
What version of Vitis AI?

This is my model. I shared only three files just for reference but I hav more than 1000

Again -- this should be another issue. Also your dataset is (3) npz files, but I don't see a model anywhere, meaning that one won't be able to diagnose it as we don't know the model layers involved.
What version of Vitis AI?

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?

It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: []

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?

It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: []

That is just a warning that TF always generates - it is nothing to do with any issues that you might have.

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?

It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: []

This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?

It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: []

That is just a warning that TF always generates - it is nothing to do with any issues that you might have.

But I'm unable to pinpoint the issue causing this Cannot assign to variable BN-0-0/depthwise_kernel:0 due to variable shape (1, 1, 64, 1) and value shape (3, 3, 64, 1) are incompatible

Are you able to share the trained floating-point checkpoint?If yes, email me at @.*** Sent from my Galaxy
-------- Original message --------From: AfifaIshtiaq @.> Date: 12/05/2022  14:34  (GMT+01:00) To: Xilinx/Vitis-AI @.> Cc: Mark Harvey @.>, Comment @.> Subject: Re: [Xilinx/Vitis-AI] Missing model annotations in TF2 quantizer (Issue #628)
This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?
It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: []
This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model?
It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model)
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: []
That is just a warning that TF always generates - it is nothing to do with any issues that you might have.
But I'm unable to pinpoint the issue causing this Cannot assign to variable BN-0-0/depthwise_kernel:0 due to variable shape (1, 1, 64, 1) and value shape (3, 3, 64, 1) are incompatible
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Are you able to share the trained floating-point checkpoint?If yes, email me at @.*** Sent from my Galaxy -------- Original message --------From: AfifaIshtiaq @.> Date: 12/05/2022 14:34 (GMT+01:00) To: Xilinx/Vitis-AI @.> Cc: Mark Harvey @.>, Comment @.> Subject: Re: [Xilinx/Vitis-AI] Missing model annotations in TF2 quantizer (Issue #628) This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model? It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model) /opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: [] This should be another issue, but 1) what version of Vitis AI and 2) what's the code being used to optimize the model? It also gave me this issue when I do quantizer = vitis_quantize.VitisQuantizer(model) /opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: [] That is just a warning that TF always generates - it is nothing to do with any issues that you might have. But I'm unable to pinpoint the issue causing this Cannot assign to variable BN-0-0/depthwise_kernel:0 due to variable shape (1, 1, 64, 1) and value shape (3, 3, 64, 1) are incompatible —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
This is the model
deep_rx.zip

OK, what I see in Netron is that you have 3 separate inputs:

RX-data-In with shape [batch, 14,72,2]
TX-Pilot-In with shape [batch,  14,72,2]
Raw-Channel-Est-In with shape [batch,  14,72,2]

..these inputs are concatenated inside the model, so your quantizer script will need to provide batches of 3 separate data samples with the appropriate shapes. Is that what you are doing?
Just as an aside, I think the structure of your blocks may cause some issues with the Vitis-AI compiler - I think it will be better to have Conv-BN-relu rather than BN-relu-conv.

yes this is my input generation file for quantizer
test_model.zip

OK, what I see in Netron is that you have 3 separate inputs:

RX-data-In with shape [batch, 14,72,2]
TX-Pilot-In with shape [batch,  14,72,2]
Raw-Channel-Est-In with shape [batch,  14,72,2]

..these inputs are concatenated inside the model, so your quantizer script will need to provide batches of 3 separate data samples with the appropriate shapes. Is that what you are doing?
Just as an aside, I think the structure of your blocks may cause some issues with the Vitis-AI compiler - I think it will be better to have Conv-BN-relu rather than BN-relu-conv.

I use this script to input quantizer
Preprocess.zip

/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument.
category=CustomMaskWarning)
[VAI INFO] Update custom_layer_type: []

when I run results = model.evaluate(x=test_generator)
it works fine but when I use vitis quantizer it gets stucand after 15 to 20 mins it gave me the following output
[VAI INFO] Update custom_layer_type: []
Traceback (most recent call last):
File "test_model.py", line 50, in
#quantized_model = quantizer.quantize_model(calib_dataset=test_generator,separate_conv_act=False)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 566, in quantize_model
self.optimize_model()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 454, in optimize_model
self._create_optimized_model()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 228, in _create_optimized_model
quantize_strategy=self._quantize_strategy)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/vitis_quantize.py", line 700, in create_optimize_model
model, candidate_layers, layer_metadata)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/eight_bit/vitis_8bit_transforms_pipeline.py", line 74, in apply
model, configs, available_transforms, candidate_layers, layer_metadata)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/eight_bit/vitis_8bit_transforms_pipeline.py", line 50, in _apply_availables
layer_metadata).recursive_transform()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/graph_transformations/model_transformer.py", line 738, in recursive_transform
self.layer_metadata).transform()
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/graph_transformations/model_transformer.py", line 704, in transform
self._set_layer_weights(layer, weights_map)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/tensorflow_model_optimization/python/core/quantization/keras/vitis/graph_transformations/model_transformer.py", line 593, in _set_layer_weights
K.batch_set_value(weight_value_tuples)
File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py", line 201, in wrapper
return target(*args, **kwargs)
File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/tensorflow/python/keras/backend.py", line 3576, in batch_set_value
x.assign(np.asarray(value, dtype=dtype(x)))
File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 858, in assign
self._shape.assert_is_compatible_with(value_tensor.shape)
File "/home/vitis-ai-user/.local/lib/python3.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 1134, in assert_is_compatible_with
raise ValueError("Shapes %s and %s are incompatible" % (self, other))
ValueError: Shapes (64,) and (128,) are incompatible

Just as an aside, I think the structure of your blocks may cause some issues with the Vitis-AI compiler - I think it will be better to have Conv-BN-relu rather than BN-relu-conv.

I was able to resolve the above issues. But now it is stucked at Calibration step
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument.
category=CustomMaskWarning)
[VAI INFO] Update custom_layer_type: []
[VAI INFO] Start CrossLayerEqualization...
10/10 [==============================] - 11s 1s/step
[VAI INFO] CrossLayerEqualization Done.
[VAI INFO] Start Quantize Calibration...
2022-05-17 02:41:53.466988: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)
2701/7200 [==========>...................] - ETA: 3:31:23
7200/7200 [==============================] - 20320s 3s/step

That warning comes from Tensorflow,  not VitisAI.Sent from my Galaxy -------- Original message --------From: AfifaIshtiaq @.> Date: 17/05/2022 16:34 (GMT+01:00) To: Xilinx/Vitis-AI @.> Cc: Mark Harvey @.>, Comment @.> Subject: Re: [Xilinx/Vitis-AI] Missing model annotations in TF2 quantizer (Issue #628) OK, what I see in Netron is that you have 3 separate inputs: RX-data-In with shape [batch, 14,72,2] TX-Pilot-In with shape [batch, 14,72,2] Raw-Channel-Est-In with shape [batch, 14,72,2] ..these inputs are concatenated inside the model, so your quantizer script will need to provide batches of 3 separate data samples with the appropriate shapes. Is that what you are doing? Just as an aside, I think the structure of your blocks may cause some issues with the Vitis-AI compiler - I think it will be better to have Conv-BN-relu rather than BN-relu-conv. I was able to quantize. Is it normal to have the following compile related warning /opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument. category=CustomMaskWarning) [VAI INFO] Update custom_layer_type: [] [VAI INFO] Start CrossLayerEqualization... 10/10 [==============================] - 11s 1s/step [VAI INFO] CrossLayerEqualization Done. [VAI INFO] Start Quantize Calibration... 2022-05-17 02:41:53.466988: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2) 2701/7200 [==========>...................] - ETA: 3:31:23 7200/7200 [==============================] - 20320s 3s/step [VAI INFO] Quantize Calibration Done. [VAI INFO] Start Post-Quantize Adjustment... [VAI INFO] Post-Quantize Adjustment Done. [VAI INFO] Quantization Finished. WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. model.compile_metrics will be empty until you train or evaluate the model. —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Thanks.. I'm able to compile my model and now I try to run xdputil on my model but it ran into an error. Although I can run it for other examples
(vitis-ai-tensorflow2) Vitis-AI /workspace/models/ChEstModel > vai_c_tensorflow2 -m quantized_model.h5 -a /opt/vitis_ai/compiler/arch/DPUCVDX8G/VCK190/VCK190arch.json -o compile -n deeprx_compile

VITIS_AI Compilation - Xilinx Inc.

[INFO] Namespace(batchsize=1, inputs_shape=None, layout='NHWC', model_files=['quantized_model.h5'], model_type='tensorflow2', named_inputs_shape=None, out_filename='/tmp/deeprx_compile_org.xmodel', proto=None)
[INFO] tensorflow2 model: /workspace/models/ChEstModel/quantized_model.h5
[INFO] keras version: 2.6.0
[INFO] Tensorflow Keras model type: functional
[INFO] parse raw model     :100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 103/103 [00:00<00:00, 18796.26it/s]
[INFO] infer shape (NHWC)  :100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 176/176 [00:00<00:00, 2965.26it/s]
[INFO] perform level-0 opt :100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 66.53it/s]
[INFO] perform level-1 opt :100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 280.69it/s]
[INFO] generate xmodel     :100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 176/176 [00:00<00:00, 3567.46it/s]
[INFO] dump xmodel: /tmp/deeprx_compile_org.xmodel
[UNILOG][INFO] Compile mode: dpu
[UNILOG][INFO] Debug mode: function
[UNILOG][INFO] Target architecture: DPUCVDX8G_ISA2_C64B5_0602001036088252
[UNILOG][INFO] Graph name: DeepRx, with op num: 420
[UNILOG][INFO] Begin to compile...
[UNILOG][INFO] Total device subgraph number 33, DPU subgraph number 15
[UNILOG][INFO] Compile done.
[UNILOG][INFO] The meta json is saved to "/workspace/models/ChEstModel/compile/meta.json"
[UNILOG][INFO] The compiled xmodel is saved to "/workspace/models/ChEstModel/compile/deeprx_compile.xmodel"
[UNILOG][INFO] The compiled xmodel's md5sum is c7bf4ec4c241d11c58bc3f47e1122829, and has been saved to "/workspace/models/ChEstModel/compile/md5sum.txt"
Target
root@xilinx-vck190-2021_2:~/models# xdputil benchmark resnet50.xmodel -i -1 1
XAIEFAL: INFO: Resource group Avail is created.
XAIEFAL: INFO: Resource group Static is created.
XAIEFAL: INFO: Resource group Generic is created.
WARNING: Logging before InitGoogleLogging() is written to STDERR
I0517 08:39:34.758364  1172 test_dpu_runner_mt.cpp:475] shuffle results for batch...
I0517 08:39:34.759827  1172 performance_test.hpp:73] 0% ...
I0517 08:39:40.759963  1172 performance_test.hpp:76] 10% ...
I0517 08:39:46.760113  1172 performance_test.hpp:76] 20% ...
I0517 08:39:52.760265  1172 performance_test.hpp:76] 30% ...
I0517 08:39:58.760419  1172 performance_test.hpp:76] 40% ...
I0517 08:40:04.760569  1172 performance_test.hpp:76] 50% ...
I0517 08:40:10.760716  1172 performance_test.hpp:76] 60% ...
I0517 08:40:16.760866  1172 performance_test.hpp:76] 70% ...
I0517 08:40:22.761023  1172 performance_test.hpp:76] 80% ...
I0517 08:40:28.761174  1172 performance_test.hpp:76] 90% ...
I0517 08:40:34.761327  1172 performance_test.hpp:76] 100% ...
I0517 08:40:34.761395  1172 performance_test.hpp:79] stop and waiting for all threads terminated....
I0517 08:40:34.763039  1172 performance_test.hpp:85] thread-0 processes 142620 frames
I0517 08:40:34.763065  1172 performance_test.hpp:93] it takes 1652 us for shutdown
I0517 08:40:34.763082  1172 performance_test.hpp:94] FPS= 2376.87 number_of_frames= 142620 time= 60.0033 seconds.
I0517 08:40:34.763118  1172 performance_test.hpp:96] BYEBYE
Test PASS.
root@xilinx-vck190-2021_2:~/models# xdputil benchmark deeprx_compile.xmodel -i -1 1
XAIEFAL: INFO: Resource group Avail is created.
XAIEFAL: INFO: Resource group Static is created.
XAIEFAL: INFO: Resource group Generic is created.
WARNING: Logging before InitGoogleLogging() is written to STDERR
F0517 08:40:51.740269  1177 fix.cpp:32] Check failed: round_mode == "DPU_ROUND" (PY3_ROUND vs. DPU_ROUND) TODO:
*** Check failure stack trace: ***
/usr/bin/xdputil: line 20:  1176 Aborted                 /usr/bin/python3 -m xdputil $*

@AfifaIshtiaq How were you able to resolve the Value Error problem. I am kind of struck with the sample problem as yours. Thanks a lot.

Please check if your layer parameters are supported by cpu task and dpu
task. Also of dense layer is included in the supported set of operations of
vitis ai quantise. Please refer to
User guide of vitis ai quantise
On Thu 23. Jun 2022 at 08:41, Dere Mustapha Deji @.***>
wrote:

@AfifaIshtiaq https://github.com/AfifaIshtiaq How were you able to
resolve the Value Error problem. I am kind of struck with the sample
problem as yours. Thanks a lot.
[image: Error]
https://user-images.githubusercontent.com/46024162/175232354-b0e02e14-25b5-471f-bfdb-ae782b70ae40.png
[image: H5]
https://user-images.githubusercontent.com/46024162/175232350-cb079072-70d4-41d3-8f66-9b694f29a0e0.png
—
Reply to this email directly, view it on GitHub
https://github.com/Xilinx/Vitis-AI/issues/628#issuecomment-1164013833,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQIQY4VA26E5R7QMM44P3WTVQQBLHANCNFSM5LXTCWGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Also dropout layers can be an issue
On Thu 23. Jun 2022 at 08:41, Dere Mustapha Deji @.***>
wrote:

@AfifaIshtiaq https://github.com/AfifaIshtiaq How were you able to
resolve the Value Error problem. I am kind of struck with the sample
problem as yours. Thanks a lot.
[image: Error]
https://user-images.githubusercontent.com/46024162/175232354-b0e02e14-25b5-471f-bfdb-ae782b70ae40.png
[image: H5]
https://user-images.githubusercontent.com/46024162/175232350-cb079072-70d4-41d3-8f66-9b694f29a0e0.png
—
Reply to this email directly, view it on GitHub
https://github.com/Xilinx/Vitis-AI/issues/628#issuecomment-1164013833,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQIQY4VA26E5R7QMM44P3WTVQQBLHANCNFSM5LXTCWGA
.
You are receiving this because you were mentioned.Message ID:
@.***>

authors: AfifaIshtiaq deremustapha foolmarks jeinstei


text:
PermissionError: [Errno 13] Permission denied:, and WARNING: Unable to find /tools/Xilinx/Vitis/2022.2/settings64.sh

Hello,
I came across this permission error when I tried to run the './run-docker.sh quicktest'.

Tried everything I can as mentioned in this post: https://github.com/Xilinx/finn/issues/258, but no hope.

I believe the following warnings are also associated with the permission error:
WARNING: Unable to find /tools/Xilinx/Vitis/2022.2/settings64.sh
WARNING: Functionality dependent on Vitis will not be available.
WARNING: If you need Vitis, ensure VITIS_PATH is set correctly and mounted into the Docker container.
WARNING: Unable to find /tools/Xilinx/Vivado/2022.2/settings64.sh
WARNING: Functionality dependent on Vivado will not be available.
WARNING: If you need Vivado, ensure VIVADO_PATH is set correctly and mounted into the Docker container.
WARNING: Unable to find /tools/Xilinx/Vitis_HLS/2022.2/settings64.sh
WARNING: Functionality dependent on Vitis HLS will not be available.
WARNING: Please note that FINN needs at least version 2020.2 for Vitis HLS support. Our recommendation is to use version 2022.2
WARNING: If you need Vitis HLS, ensure HLS_PATH is set correctly and mounted into the Docker container.

repo: Xilinx/finn


text:
5v access

i saw the relay are 5v
is there a way to get the 5 volt on this board and what should be its supported max amper

There is no 5V output in the design, but 5V can be obtained from welding here, which theoretically supports 2A current

authors: lewisxhe rosbeef

repo: Xinyuan-LilyGO/LilyGo-T-Relay

license: MIT


text:
[Enhancement] Add toggle for update notifs

Related Issues
N/A
Description
This pull request adds a simple toggle that posts the update notification in Discord.
Personally I was running a customized build that was a few versions behind and I kept getting pinged to update.
This addresses that and allows for the server managers to disable it if they'd like.
It's enabled by default

All issues re-examined:
Fixed in MCDC v2 stable release.

source: gharchive/pull-request

repo: Xujiayao/Discord-MC-Chat


text:
Blood Magic - soul network /player files glitched?

For a certain player, When his bound orb is placed on the blood altar, and viewed using seers sigil or diviner, you only see 4 lp. .. however no lp is transferred to soul network, no matter what is tried. He removed the orb and then no lp is stored. There is no rituals running, no lava crystals, should be no drain on the players soul network. Tried several different orbs with no improvement. Altar has millions of lp available.
Tried this with same character on single player and it worked fine.
had the server administrator wipe the 3 player data files, still no lp will store in this players soul network.
Others on the server are able to charge their soul networks on this altar with no issues.
any suggestion for further troubleshooting?
Thanks

I'll ask the obvious question which is sometimes the issue.  The blood orb is paired to the user before going into the altar?

yes, the orb -is- bound to the player. and displays hs name on the orbs description. 'property of'

And no other players are affected? We havent seen this issue ourselves yet. That we are aware of at least.

That's right, no other players affected. When the blood orb is placed on the altar you can see the number change to 4 or -4.. we think that's reflecting the transfer rate of the LP.. But nothing is transferred. During troubleshooting the server admin stated that there were two sets of player data for each account (3 files each) which he said was unusual. I'm not sure but the second set may be from vampirism? At any rate, still no luck resolving this issue.

license_source: bigquery


text:
🛑 MOMO is down

In e835c4e, MOMO (https://www.momoshop.com.tw/main/Main.jsp) was down:

HTTP code: 0
Response time: 0 ms

Resolved: MOMO is back up in ab0eb62 after 39 minutes.


text:
🛑 MOMO is down

In ae7df28, MOMO (https://www.momoshop.com.tw/main/Main.jsp) was down:

HTTP code: 0
Response time: 0 ms

Resolved: MOMO is back up in 41f24bb.


text:
🛑 MOMO is down

In cea7053, MOMO (https://www.momoshop.com.tw/main/Main.jsp) was down:

HTTP code: 0
Response time: 0 ms

Resolved: MOMO is back up in 004459c.


text:
새 목표 생성 UI 수정(제플린 확인)

리스트 추가 뷰 수정(제플린 기준 : Newgoal-5)
도균쓰 의견 반영함!

다했으면 내가 닫으면 되는건가여?


text:
🛑 Haty Server is down

In 5365b52, Haty Server (https://hashi.sbs/_matrix/consent) was down:

HTTP code: 523
Response time: 2005 ms

Resolved: Haty Server is back up in 032a6cf after 42 minutes.

repo: YAT-Publish/status


text:
🛑 Hashi Random Images API(Temporary) is down

In 1125bf9, Hashi Random Images API(Temporary) (https://www.loliapi.com/acg) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Hashi Random Images API(Temporary) is back up in d70dcc9 after 6 minutes.


text:
断言报错

版本号
~ v1.8.0
什么问题
~ 断言报错

如何复现此问题
~
什么浏览器
~ chrome 95
什么系统（Linux, Windows, macOS）
windows

同样的问题。

repo: YMFE/yapi


text:
🛑 ymstnt & com. website is down

In b4074ac, ymstnt & com. website (https://ymstnt.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ymstnt & com. website is back up in b5da2cd after 4 minutes.

repo: YMSTNT/status


text:
ImportError: No module named pwn

root:~#python
Python 2.7.6 (defaullt ......)

from pwn import *
Traceback (most recent call last):
File "", line 1, in

ImportError:  No module named pwn
Does anyone help and thank you very much.

need install pwntools

It worked for me:
https://docs.pwntools.com/en/stable/install.html
#!/usr/bin/env python
import sys
**from pwn import ***
Thanks @Ma3k4H3d

license: mit


text:
Expose API To Obj-C

Any chance you could add the necessary decorations to expose this lib to Obj-C? That would allow us to create a plugin for this module for github.com/nativescript.

I did try and do this in a pull request, but I don't understand enough about Swift 2 to make the appropriate class changes

Hi @burkeholland!
For now we don't have plans to be compatible with objective-c. If you want, you can create a pull request 😉
Thanks!

authors: burkeholland serejahh


text:
View Invariance

Hi Yanjie,
Exciting work, I am curious how you achieved View invariance? Did you collect data from different views during data collection or using data-aug in 3D for variant views? What's the action space frame and robot state frame(for EE), are you using camera frame for EE?

Hi, thank you for your interest. The view invariance is achieved via using our 3D representation. We do not collect data from different views. We use joint positions as action/state.

when you collect data, does the robot move?

We do not use camera pose; but yea, the camera is moving (as shown in our videos) due to the head move.

authors: JiaheXu YanjieZe


text:
能留个联系方式或建个群吗？方便沟通

如题，我的QQ号是619568521，希望大神能加我

issue请不要发此类内容，谢谢！

authors: MatrixAge liuyuinsdu

repo: YaoApp/yao


text:
menu driven cpp BST program

@Yaser-123
binary search tree menu driven program with features like :
insert
delete
position
search
?

@Anuraj-IND
👏 Task assigned to you! Please create a Binary Search Tree (BST) program and include the following menu-driven features:
Insert
Delete
Position
Search
Feel free to ask if you have any questions. Looking forward to your contribution! 🚀

@Yaser-123 done btw you need to accept my pull req first coz there were some bugs in ur file i mean it wasnt well tracked and cloning normally was giving error accept my pull req then ill try to clone it again normal way to check now if its working fine or not


text:
Feature suggestion: allow using C-like dot notation for accessing struct variables instead of using variable_struct_get/set

Could there be a feature for using traditional dot notation for accessing variables inside structs and custom classes rather than having to type variable_struct_get(), or, if you can, maybe even variables_struct_set() as well? For example, Instead of typing:
x = variable_struct_get(pos, "x");

you could instead type:
x = pos.x;

Or, even worse, setting a struct variable normally would be done like this:
variable_struct_set(pos, "x", 10);

instead of:
pos.x = 10;

Using #import makes things a little easier, but it's still a lot of typing and makes using structs and custom types an absolute slog. Yes, this is GameMaker's fault for making things so overly complicated, but GMEdit may hopefully be able to resolve this problem that shouldn't have even existed in the first place. I don't know if it's just a me thing, but using struct variables like this is so confusing because it deviates so much from using regular variables (and the fact that every other programming language out there uses dots and then treats the variable like a regular variable from then on) and it requires double the amount of typing using a struct variable compared to just a regular variable.
If there's some sort of way to do this with current #import statements or something that I'm unaware of, please tell me, but if not, then I hope this issue did a good enough job of explaining the issue and a potential solution. I would be fine with any sort of solution, even if it's not dot notation for whatever reason, just as long it shortens the syntax for accessing struct variables. If dot notation causes too many issues, then maybe JS-style bracket notation could be used as an alternative? Who knows, just as long as it can save extra typing and confusion.

It does? Thank you, I couldn't really find much on structs in the first place, so it was even hard to find how to use struct methods. Sorry for using up your time, but keep up the good work! This sounds like an infomercial, but GMEdit makes me not want to use vanilla GameMaker again (even though Feather looks like a promising head down the right direction).

repo: YellowAfterlife/GMEdit


text:
Issue related with frequency alert and related_events

Hello @Qmando,
We've observed than num_events limit the size of related_events.
For example, when you obtain 10 documents in query execution during an interval and the threshold (num_events) is set to 5, only 5 documents are attached in the alert: 1 on the match and the other 4 in the related_events list attached inside the match.
In our opinion, 10 documents would be attached in the alert: 1 on the match and the other 9 in the related_events lists.
We are doing something wrong?
type: frequency
use_count_query: false
doc_type: doc
num_events: 3
timeframe:
  seconds: 300
index: kafka_cloudera-%Y.%m.%d
use_strftime_index: True
filter:
- query:
    query_string:
      query: 'VarName:"minutos_accepted" AND NumValue:>3'
query_key: "VarName"
attach_related: true
realert:
  minutes: 0

Yelp/elastalert is no longer maintained. Please use jertel/elastalert2.
https://github.com/jertel/elastalert2

authors: alvarolmedo nsano-rururu

repo: Yelp/elastalert


text:
elastalert not sending all the hits

Hi,
elastalert send only some alert, but it doesn't send all the hits.
If I run elastalert-test-rule --config config/elastalert_config.yaml rules/slack_alert_f1_sniff.yaml I get instead all the hits.
This is my rule:
name: my_name

type: any

realert:
  minutes: 0

# (Required)
# Index to search, wildcard supported
index: my_index

filter:
- term:
    report_tags.keyword: "my_tag"
- term:
    fail: 1

# (Required)
# The alert is use when a match is found
alert:
- "slack"

slack:
# prod slack
slack_webhook_url: "mywebhook"

slack_emoji_override: ':warning:'
slack_parse_override: full

alert_subject: "Dashboard link: mylink"
alert_text: |
    Failure test: {0}
    @timestamp: {1}
    Box: {2} {3} {4} {5}
    Failure reason: {6}
    Slot: myslot
    Report tags: {8}

alert_text_type: alert_text_only
alert_text_args: ["test_name","@timestamp", "box_oem", "box_type", "box_model","box_ps_version", "failure_reason","slot","report_tags"]

We also recommend asking questions on the Gitter channel
https://gitter.im/Yelp/elastalert

Thanks,
I think I have got part of the problem, was due to buffer time minutes set too low.

Wrong config settings with respect to ELK updates.

ElastAlert bug?

ElastAlert bug?

No sorry for the short comment.
Elastalert query with respect to elasticsearch @timestamp (I wasn't able to change this) and in my elasticsearch @timestamp represents the starting time of our tests.
Our tests are also synched in elasticsearch every 20 min, that means with the default value of bufferTime of 15 min by the time the test finishes and is loaded in ELK the elastalert query will be too short.
I have updated the bufferTime value to 60 min and seems to have solve the issue up to now.

authors: antoniopafundi-yv nsano-rururu


text:
Phase 5: Similarity Recommender based on  features of the Song

Similarity Recommender based on features of the Song
Objectives:
Build a similarity recommender system that recommends songs based on their features like genre, numerical attributes of the song, and decade it was released. Include features you find compelling.
Challenges:

To include features that would give us a good recommendation system.
Dealing with inconsistent values in the numerical attributes of the song tracks.
Combination of varying number of features.

Proposed Solution:

EDA can help us to gauge which attributes are important.
Since similar genres sound similar and have more or less similar attributes, including genres can in itself be inclusive of many of these numerical features.

Fail to incorporate it in main on time

Test passed


text:
能否在leaderf rg的输出结果中，进一步过滤文件名

因为通过leader rg的关键字匹配有时候输出的内容很多，能否在leaderf rg的输出结果中，进一步过滤文件名呢？目前在input mode好像只能过滤文件内容；normal mode虽然能够搜索，但是不会过滤显示。

加上--match-path

有没有简单的方法，可以在rg的结果中，排除掉某种后缀的文件呢，比如log？

有没有简单的方法，可以在rg的结果中，排除掉某种后缀的文件呢，比如log？

rg本身就有这个功能，比如：Leaderf rg xxx -g!*.log

有没有简单的方法，可以在rg的结果中，排除掉某种后缀的文件呢，比如log？

rg本身就有这个功能，比如：Leaderf rg xxx -g!*.log

是的，但是有时候rg的查找时间比较长，好容易找到结果，发现大量是log，退出当前结果，加option重新查找是个方式，如果能够在之前找到的结果里面，直接过滤掉比如log文件，那就更好了。

有没有简单的方法，可以在rg的结果中，排除掉某种后缀的文件呢，比如log？

rg本身就有这个功能，比如：Leaderf rg xxx -g!*.log

是的，但是有时候rg的查找时间比较长，好容易找到结果，发现大量是log，退出当前结果，加option重新查找是个方式，如果能够在之前找到的结果里面，直接过滤掉比如log文件，那就更好了。

目前还不支持反向过滤。

有没有简单的方法，可以在rg的结果中，排除掉某种后缀的文件呢，比如log？

rg本身就有这个功能，比如：Leaderf rg xxx -g!*.log

是的，但是有时候rg的查找时间比较长，好容易找到结果，发现大量是log，退出当前结果，加option重新查找是个方式，如果能够在之前找到的结果里面，直接过滤掉比如log文件，那就更好了。

目前还不支持反向过滤。

期待。。。

authors: Yggdroot futurehome

repo: Yggdroot/LeaderF


text:
Videos

I'm thinking about making video functionality available as well using video.js.
Here are some potential concerns:

Asynchronosity. Actually, this might just be my issue since I don't know much about JS, but while using video.js's main website's demo, I saw how they have the buffer and the async functionality. We need to somehow implement that to avoid 1GB base64 encoded videos being synchronously loaded from a server
Sending the video to a server. I imagine that RichEditorView is meant for apps that also have backends, so I strongly encourage us to figure out how to implement base64 encoded media, store it in something like an array, and allow for its upload to a server by offering another functionality.

And then in that case, when the server receives the HTML, it will also need to receive the additional base64 encoded data (that is the media e.g. images and videos) for processing such as uploading to S3 and having a file size limit.
A potential method is adding a swift function and a JS array for interaction.
Another potential method is to store the base64 encoded data inside their respective video or img tags, and then the server has to deal with grabbing the base64 encoded data. (Btw, encoding the data on the frontend is not enough. Always base64 encode the data on the backend as well)

Sending an HTML tag with the video player from video.js will mean we also have to strip the tags... but that should be relatively easy

Another issue that is arising (but have not tested yet) is a memory issue. Loading a 1GB video (approximately 10 minutes with normal 1080p resolution I think) in memory is going to crash the app. It is better if it is sent to a server first (some bucket that can serve media files).
So an alternative for a video will be the following:

Instead of loading the video while a user is editing, save a selected link that matches an ID.
This methodology will become abnormally long, so I may have to split server-based RTE with Offline-based RTE.

RECOMMENDED: An offline-based RTE can use FileManager. OR
This offline-based RTE can still load the base64 into the text editor because the user could possibly delete the video within the photos app.

With server-based RTE, the methodology is the same as before: insert an id attribute inside the video (or image since this functionality will go hand in hand) tag.

Save the base64 inside FileManager temporarily. This avoids the user accidentally thinking that the media has been saved.

Added in #4

repo: YoomamaFTW/RichEditorView


text:
Broken link in the README

The link to the paper in the README seems to be broken. You could alternatively post a bibliography entry for the paper; that would probably be sufficient.
It is always fun to see new languages!

Thank you.
I will add a link to archive.

authors: YoshikuniJujo arendsee


text:
Scope of the project

By looking at the sources of this repo, it seems that the project is to generate artifacts for a wide range of platforms (both OSs and architectures). That's nice! However, I'm lacking some explanation in the README for understanding how does this fit with other similar projects in the ecosystem. I'd like to gather some information for listing it in hdl/packages and forwarding people for which this is the best solution.
Precisely, YosysHQ/fpga-toolchain is based on prior work by Miodrag, who did also contribute to apio. See https://github.com/YosysHQ/fpga-toolchain#credits and https://github.com/FPGAwars/toolchain-ecp5. Moreover, builds in fpga-toolchain are nightly/daily too. The main feature of fpga-toolchain is that tools are built statically.
In this repo:

Python is used for the plumbing, instead of bash.
The tools are cross-compiled on containers, instead of using the CI environments (typically Ubuntu).
At the same time, there is a Windows job in CI, which builds tools on MSYS2 "natively".

On the one hand, I'm not sure about the motivation for having a container for Windows cross-compilation and an MSYS2 CI job at the same time. I would expect one or the other to be used.
On the other hand, it seems that most of the tools are still built statically. Hence, is this a drop-in replacement for fpga-toolchain (with a different codebase and build environments)?
Furthermore, are you expecting to provide containers to end users? Or are those only for using a custom and portable build environment?

With regard to MSYS2, similarly to fpga-toolchain, you seem to have a significant number of tweaks for trying to use the same plumbing as for other platforms. However, IMHO, building a distribution of tools for/through MSYS2 is better done using the built-in package manager (pacman), PKGBUILD recipes and makepkg-mingw. In fact, the following works already:
# Extract https://github.com/msys2/msys2-installer/releases/download/2021-02-28/msys2-base-x86_64-20210228.tar.xz and open a MINGW64 shell
# NOTE: https://github.com/msys2/setup-msys2/blob/master/main.js#L12

# pacman -Syu
...

# pacman -S mingw-w64-x86_64-eda
:: There are 21 members in group mingw-w64-x86_64-eda:
:: Repository mingw64
   1) mingw-w64-x86_64-dfu-util
   2) mingw-w64-x86_64-ecpprog
   3) mingw-w64-x86_64-fritzing
   4) mingw-w64-x86_64-ghdl-llvm
   5) mingw-w64-x86_64-gtkwave
   6) mingw-w64-x86_64-icesprog
   7) mingw-w64-x86_64-icestorm
   8) mingw-w64-x86_64-iverilog
   9) mingw-w64-x86_64-kicad
   10) mingw-w64-x86_64-kicad-footprints
   11) mingw-w64-x86_64-kicad-meta
   12) mingw-w64-x86_64-kicad-packages3D
   13) mingw-w64-x86_64-kicad-symbols
   14) mingw-w64-x86_64-kicad-templates
   15) mingw-w64-x86_64-nextpnr
   16) mingw-w64-x86_64-ngspice
   17) mingw-w64-x86_64-openFPGALoader
   18) mingw-w64-x86_64-prjtrellis
   19) mingw-w64-x86_64-serial-studio
   20) mingw-w64-x86_64-verilator
   21) mingw-w64-x86_64-yosys

Enter a selection (default=all):

Find links to each of the recipes in https://hdl.github.io/MINGW-packages/#_packagestools and https://packages.msys2.org/group/mingw-w64-x86_64-eda. Recipes are located in https://github.com/msys2/MINGW-packages/.
The official recipes use fixed commits/tags. There are two workflows in hdl/MINGW-packages for keeping track of breaking changes and/or outdated packages:

https://github.com/hdl/MINGW-packages/blob/main/.github/workflows/build.yml builds the recipes. Since MSYS2 is a rolling environment, builds might break and/or the tools might need to be rebuilt.
https://github.com/hdl/MINGW-packages/blob/main/.github/workflows/test.yml tests the latest available packages with main/master/head test suites. This allows knowing when packages are outdated because some new feature was added.

On the one hand, you might use those workflows as a reference for working around the timeout issues you have in CI. On the other hand, you might want to customise those recipes for building main/master/head of the projects, instead of fixed versions. That would make your build procedure on/for Windows different from others. Yet, supporting cross-compilation for arm, arm64, riscv64 and amd64 is a huge task already. Hence, reducing the complexity of the Windows infrastructure would allow you to focus on the foreign linux builds.
Personally, I like contributing workflows for building main/master/head to the projects, instead of doing it in orgs MSYS2 or HDL. See: iverilog, verilator, gtkwave, GHDL, Serial-Studio, etc. There is a reference workflow in https://hdl.github.io/MINGW-packages/#_testing_pkgbuild_recipes_downstream, together with some brief guidelines.
Note that MSYS2 packages are tarballs. Therefore, YosysHQ could potentially have a mirror/repository with custom builds/versions, should you want to. Alternatively, you can publish assets in a 'nightly' release:

https://github.com/gtkwave/gtkwave/releases/tag/nightly
https://github.com/ghdl/ghdl/releases/tag/nightly

A similar strategy is used in MSYS2 for staging packages: https://github.com/msys2/msys2-autobuild/releases. See also https://packages.msys2.org/queue.
Nevertheless, MSYS2 maintainers are really fast. For instance: https://github.com/msys2/MINGW-packages/pull/8180. Therefore, I don't think it's worth maintaining an independent set of nightly packages, unless you want to have very specific build options and/or combine tools with non-free software. Typically, any update will be available for everyone in 1-3 days after opening a PR.
No matter which strategy you follow, let me know if you need any hint about MSYS2/MINGW packages (hdl/MINGW-packages), QEMU and Docker (dbhi/qus) and/or MSYS2 on GitHub Actions (msys2/setup-msys2). I'm not an expert in either of them, but I do have experience with all and I'd be glad to help you make the best of your time.
Cheers

Hi Unai,
Thank you for your feedback and useful tips.
As you have noticed this is not something that is quite finished, and I do
work on solving the rest of the issues and cleaning up scripts to a
maintainable level, and that is the major reason why proper README content
is missing. We published it a bit earlier then foreseen to be able to test
GitHub actions and check if we can use it.
Anyway this project started as my effort of making a build system for our
commercial package, but in mind of greater OS support. Since it was modular
I have started from beginning to make it ready for public build as well,
since we have a lot of people interested in using open source stack but
have problems setting all solvers and can't keep up with updating all tools
they need to update. So this was made as a self-contained system to build
binary non-static releases but still able to execute on various
distributions without a change. Containers are there just for building
projects and all things you need to run software is packaged (check
default.sh for how it is done, note that for Windows I rely on setting PATH
for now for DLL loading, but looking into better solution).
Note that static build is easier to make portable, but this is not possible
for GUI tools, those that integrate python or others that rely on dynamic
loading of plugins.
Since there are a lot of possible supported platforms, but not sure we are
going to be able to make releases for all (at least not from start) it is
easy to set up the build environment and do the checks. Also this allows
adding new packages for any external contributor much easier. First I have
added Windows support for msys2 since that seems natural, but makes things
complicated for CI and testing (if you have linux based machines only) so I
made docker based one, but still have some limitations there (missing ADA
compiler, so no GHDL build possible for now).
We are still not announcing this project until there are working builds
available to download, but it is good to have more people testing and
giving their suggestions. Will see to improve preview of build status of
packages per platform, so it is known what users can expect to have in the
final build ( there are certain solvers that are linux only, or just can
work on windows for example). In time I also plan to upstream some of the
changes to projects used to make scripts easier to maintain but also those
projects more compatible with certain OS-es.
For now I would concentrate on FPGA based EDA software that is already in
and make that building nice before attempting to add something else.
On Wed, Mar 24, 2021 at 3:32 AM Unai Martinez-Corral <
@.***> wrote:

By looking at the sources of this repo, it seems that the project is to
generate artifacts for a wide range of platforms (both OSs and
architectures). That's nice! However, I'm lacking some explanation in the
README for understanding how does this fit with other similar projects in
the ecosystem. I'd like to gather some information for listing it in
hdl/packages https://github.com/hdl/packages and forwarding people for
which this is the best solution.
Precisely, YosysHQ/fpga-toolchain
https://github.com/YosysHQ/fpga-toolchain is based on prior work by
Miodrag, who did also contribute to apio. See
https://github.com/YosysHQ/fpga-toolchain#credits and
https://github.com/FPGAwars/toolchain-ecp5. Moreover, builds in
fpga-toolchain are nightly/daily too. The main feature of fpga-toolchain is
that tools are built statically.
In this repo:

Python is used for the plumbing, instead of bash.
The tools are cross-compiled on containers, instead of using the CI
environments (typically Ubuntu).
At the same time, there is a Windows job in CI, which builds tools
on MSYS2 "natively".

On the one hand, I'm not sure about the motivation for having a container
for Windows cross-compilation and an MSYS2 CI job at the same time. I would
expect one or the other to be used.
On the other hand, it seems that most of the tools are still built
statically. Hence, is this a drop-in replacement for fpga-toolchain (with a
different codebase and build environments)?
Furthermore, are you expecting to provide containers to end users? Or are
those only for using a custom and portable build environment?
With regard to MSYS2, similarly to fpga-toolchain, you seem to have a
significant number of tweaks for trying to use the same plumbing as for
other platforms. However, IMHO, building a distribution of tools
for/through MSYS2 is better done using the built-in package manager
(pacman), PKGBUILD recipes and makepkg-mingw. In fact, the following works
already:
Extract https://github.com/msys2/msys2-installer/releases/download/2021-02-28/msys2-base-x86_64-20210228.tar.xz and open a MINGW64 shell# NOTE: https://github.com/msys2/setup-msys2/blob/master/main.js#L12
pacman -Syu
...
pacman -S mingw-w64-x86_64-eda
:: There are 21 members in group mingw-w64-x86_64-eda:
:: Repository mingw64

mingw-w64-x86_64-dfu-util
mingw-w64-x86_64-ecpprog
mingw-w64-x86_64-fritzing
mingw-w64-x86_64-ghdl-llvm
mingw-w64-x86_64-gtkwave
mingw-w64-x86_64-icesprog
mingw-w64-x86_64-icestorm
mingw-w64-x86_64-iverilog
mingw-w64-x86_64-kicad
mingw-w64-x86_64-kicad-footprints
mingw-w64-x86_64-kicad-meta
mingw-w64-x86_64-kicad-packages3D
mingw-w64-x86_64-kicad-symbols
mingw-w64-x86_64-kicad-templates
mingw-w64-x86_64-nextpnr
mingw-w64-x86_64-ngspice
mingw-w64-x86_64-openFPGALoader
mingw-w64-x86_64-prjtrellis
mingw-w64-x86_64-serial-studio
mingw-w64-x86_64-verilator
mingw-w64-x86_64-yosys

Enter a selection (default=all):
Find links to each of the recipes in
https://hdl.github.io/MINGW-packages/#_packagestools and
https://packages.msys2.org/group/mingw-w64-x86_64-eda. Recipes are
located in https://github.com/msys2/MINGW-packages/.
The official recipes use fixed commits/tags. There are two workflows in
hdl/MINGW-packages for keeping track of breaking changes and/or outdated
packages:

https://github.com/hdl/MINGW-packages/blob/main/.github/workflows/build.yml
builds the recipes. Since MSYS2 is a rolling environment, builds might
break and/or the tools might need to be rebuilt.
https://github.com/hdl/MINGW-packages/blob/main/.github/workflows/test.yml
tests the latest available packages with main/master/head test suites. This
allows knowing when packages are outdated because some new feature was
added.
On the one hand, you might use those workflows as a reference for working
around the timeout issues you have in CI. On the other hand, you might want
to customise those recipes for building main/master/head of the projects,
instead of fixed versions. That would make your build procedure on/for
Windows different from others. Yet, supporting cross-compilation for arm,
arm64, riscv64 and amd64 is a huge task already. Hence, reducing the
complexity of the Windows infrastructure would allow you to focus on the
foreign linux builds.
Personally, I like contributing workflows for building main/master/head to
the projects, instead of doing it in orgs MSYS2 or HDL. See: iverilog
https://github.com/steveicarus/iverilog/blob/master/.github/workflows/test.yml?rgh-link-date=2021-03-23T04%3A42%3A39Z,
verilator https://github.com/verilator/verilator/pull/2681, gtkwave
https://github.com/gtkwave/gtkwave/blob/master/.github/workflows/build.yml?rgh-link-date=2021-03-23T04%3A42%3A39Z,
GHDL https://github.com/ghdl, Serial-Studio
https://github.com/Serial-Studio/Serial-Studio/tree/master/msys2, etc.
There is a reference workflow in
https://hdl.github.io/MINGW-packages/#_testing_pkgbuild_recipes_downstream,
together with some brief guidelines.
Note that MSYS2 packages are tarballs. Therefore, YosysHQ could
potentially have a mirror/repository with custom builds/versions, should
you want to. Alternatively, you can publish assets in a 'nightly' release:

https://github.com/gtkwave/gtkwave/releases/tag/nightly
https://github.com/ghdl/ghdl/releases/tag/nightly

A similar strategy is used in MSYS2 for staging packages:
https://github.com/msys2/msys2-autobuild/releases. See also
https://packages.msys2.org/queue.
Nevertheless, MSYS2 maintainers are really fast. For instance:
msys2/MINGW-packages#8180
https://github.com/msys2/MINGW-packages/pull/8180. Therefore, I don't
think it's worth maintaining an independent set of nightly packages, unless
you want to have very specific build options and/or combine tools with
non-free software. Typically, any update will be available for everyone in
1-3 days after opening a PR.
No matter which strategy you follow, let me know if you need any hint
about MSYS2/MINGW packages (hdl/MINGW-packages
https://github.com/hdl/MINGW-packages), QEMU and Docker (dbhi/qus
https://github.com/dbhi/qus) and/or MSYS2 on GitHub Actions (
msys2/setup-msys2 https://github.com/msys2/setup-msys2). I'm not an
expert in either of them, but I do have experience with all and I'd be glad
to help you make the best of your time.
Cheers
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/YosysHQ/fpga-nightly/issues/1, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA3UUSDXJ3STE4FXGHA7IG3TFFFLVANCNFSM4ZWLLVEA
.

Anyway this project started as my effort of making a build system for our commercial package, but in mind of greater OS support.

Is "your commercial package" Tabby CAD? Is there any non-open tool in the bundle apart from Verific's parser/frontend? I only found lists of the open source tools included.

we have a lot of people interested in using open source stack but have problems setting all solvers and can't keep up with updating all tools they need to update.

I would very strongly suggest you to distribute one container, at least, even if temporarily. In general, I don't like large monolithic containers, because of technical and conceptual reasons. However, that is the fastest solution for making any custom set of tools available to any user. That is because you need to care about a single Linux environment (pick the base image that you wish). The same image can then be used in CI, on Linux, Windows or MacOS. Once you have that first problem solved, you can focus on more granular build and distribution solutions. In a sense, I'm proposing you to focus on a subset of what you already have, since all the tools are already built/tested on some Debian/Ubuntu, you avoid all that custom copying of shared libs.
For formal verification, @tmeissner contributed multiple solvers to https://hdl.github.io/containers/#_tools_and_images. Precisely, image formal contains boolector, cvc4, superprove, yices2 and z3, apart from GHDL, Yosys and SymbiYosys. You can use it as a base and add the Verific frontend as a plugin on top of it. Also, whichever additional solvers you provide in Tabby CAD. Alternatively, you can clone/fork the repo and customise the dockerfiles to your needs; or you can have a look at it and use it for inspiration. If you want to share some effort, I'd be glad to discuss how can I/we reshape hdl/containers for making it more appealing to your needs.
NOTE: unlike MINGW-packages, in the containers ghdl-yosys-plugin is a library. Therefore, there should be no conflict for your clients to have both GHDL and Verific in the same environment.

for Windows I rely on setting PATH for now for DLL loading, but looking into better solution

I don't know whether any better solution exists. The canonical approach on MSYS2 is to install all DLLs to /bin, precisely for having all of them automatically available in the PATH without dealing with additional locations.

Note that static build is easier to make portable, but this is not possible for GUI tools, those that integrate python or others that rely on dynamic loading of plugins.

Indeed... Yet, my very personal opinion is that maintaining a custom build procedure needs to pay off due to some specific feature or use case which is not supported by upstream solutions. In the case of fpga-toolchain or apio, that added value was/is the portability and ease of installation, at the cost of certain features. At the same time, when those projects were created, many EDA tools were not upstreamed to official repositories yet.
Conversely, nowadays most of the tools are already packaged as DEB, RPM and/or PKGBUILD recipes. Therefore, I think that salsa, copr, aur, homebrew, nixos, etc. are a better fit for maintaining a complex multi-arch set of tools. In fact, this is not just a comment. I expect to replace the build procedures in hdl/containers with proper DEB and/or RPM recipes. That's because the added value of containers is the containerization itself. The recipes can and should be shared with "native" users.
IMVHO, your strong point is that you are the developers or relevant contributors of most of the tools in Tabby CAD. Therefore, you have very first hand information about upcoming challenges and potentially conflicting changes. You can foresee the work that packagers will need to do in the following update. You are also in a unique position for adding the features that your clients need, and having them published ASAP. Hence, I would like to very politely ask you to reconsider whether supporting recipes, CI and distribution of 12+ tools on 4+ archs is something that 1-2 people can develop and maintain on their own. It is my very honest believe that you would be more valuable for the open source EDA community if you balanced towards focusing on communication skills; on closing any existing gap between the development of that tools and the packagers in the major distributions. I'm pretty sure you'd get good help if you asked the community "we want help for having nightly DEBs and RPMs of all YosysHQ projects". Then, you could maintain this repository (the Python part) as a wrapper around those DEB, RPM, PKGBUILD and brew recipes. You would focus on your expertise: the integration of the tools in a bundle (not actually building and cross-compiling). At the same time, contributors would not need to learn your custom plumbing, but they'd contribute with their specific knowledge.
Please, note that I'm suggesting this because I know the effort it takes to maintain all these tools on two different environments for amd64 only (and very few multiarch). That is less than half of the work you explained in your scope! In those cases, allowing contributors not to understand the plumbing and allowing myself not to know the usage details of each tool did help all of us move forward. Of course, you might have additional constraints, demands and requirements which I'm not aware of. Hence, please, accept my apologies, should you consider it intrusive.

I have added Windows support for msys2 since that seems natural, but makes things complicated for CI and testing (if you have linux based machines only) so I made docker based one, but still have some limitations there (missing ADA compiler, so no GHDL build possible for now).

Honestly, I'm not sure that will work. Naturally, I suggest you to confirm with some expert (https://gitter.im/msys2/msys2), but my understanding is that MSYS2 cannot be used on Linux. Some users have tried using Wine, but I don't think it works. This is because the MSYS2 project itself would greatly benefit from building all their packages on Linux machines, but they don't/can't. On Linux you get mingw, not MSYS2. Both projects are similar, but not the same since long time ago. You might still be able to build all the tools using mingw/linux, but I would be careful about naming them MSYS2 or mixing them with actual MSYS2 packages.

Will see to improve preview of build status of packages per platform, so it is known what users can expect to have in the final build ( there are certain solvers that are linux only, or just can work on windows for example).

When the different packaging solutions are slightly more mature (in a few months), I'd like to make a table similar to https://hdl.github.io/MINGW-packages/#_packagestools in hdl/packages, showing the tools and versions available in each packaging solution. That will hopefully allow users to pick the one that fits their needs: FPGA/EDA, Verilog/VHDL/SV, sim/synth/formal, CI/embedded/workstation, etc. For a reference, in MSYS2 they compare themselves to Arch and Cygwin: https://packages.msys2.org/outofdate.

In time I also plan to upstream some of the changes to projects used to make scripts easier to maintain but also those projects more compatible with certain OS-es.

That is really nice to hear. In fact, most (if not all) YosysHQ projects do support MSYS2 already, which really helps maintenance of packages. Must be grateful to the people that did it.

Sorry for a bit of a late answer.
First, thank you for your input and suggestions, sorry if I do not address
all your questions, but had a lot of obligations today.
Right TabbyCAD is our product, and regarding software used it is mostly
Verific integration that differentiate it from the open source version.
Regarding DEB, RPM, brew, ... it is something I have already played with,
the issue is that there would be even more combinations (due to the number
of distribution versions you need to support to make sense) and at the end
we still need to deliver something to each customer as binary blob. Also
note that a number of distributions have their own packages for some of the
software we use and we will have conflicts with those (possible to override
in most cases, but still an additional burden).
In this case having one binary distribution for one architecture makes less
effort of maintaining it then writing 5 different recipes and building it
for various distribution versions.
For sure there are pros and cons for each approach, and it is hard to say
something is better until it is late :)
On Wed, Mar 24, 2021 at 1:10 PM Unai Martinez-Corral <
@.***> wrote:

Anyway this project started as my effort of making a build system for our
commercial package, but in mind of greater OS support.
Is "your commercial package" Tabby CAD
https://www.yosyshq.com/tabby-cad-datasheet? Is there any non-open tool
in the bundle apart from Verific's parser/frontend? I only found lists of
the open source tools included.
we have a lot of people interested in using open source stack but have
problems setting all solvers and can't keep up with updating all tools they
need to update.
I would very strongly suggest you to distribute one container, at least,
even if temporarily. In general, I don't like large monolithic containers,
because of technical and conceptual reasons. However, that is the fastest
solution for making any custom set of tools available to any user. That is
because you need to care about a single Linux environment (pick the base
image that you wish). The same image can then be used in CI, on Linux,
Windows or MacOS. Once you have that first problem solved, you can focus on
more granular build and distribution solutions. In a sense, I'm proposing
you to focus on a subset of what you already have, since all the tools are
already built/tested on some Debian/Ubuntu, you avoid all that custom
copying of shared libs.
For formal verification, @tmeissner https://github.com/tmeissner
contributed multiple solvers to
https://hdl.github.io/containers/#_tools_and_images. Precisely, image
formal contains boolector, cvc4, superprove, yices2 and z3, apart from
GHDL, Yosys and SymbiYosys. You can use it as a base and add the Verific
frontend as a plugin on top of it. Also, whichever additional solvers you
provide in Tabby CAD. Alternatively, you can clone/fork the repo and
customise the dockerfiles to your needs; or you can have a look at it and
use it for inspiration. If you want to share some effort, I'd be glad to
discuss how can I/we reshape hdl/containers for making it more appealing to
your needs.
NOTE: unlike MINGW-packages, in the containers ghdl-yosys-plugin is a
library. Therefore, there should be no conflict for your clients to have
both GHDL and Verific in the same environment.
for Windows I rely on setting PATH for now for DLL loading, but looking
into better solution
I don't know whether any better solution exists. The canonical approach on
MSYS2 is to install all DLLs to /bin, precisely for having all of them
automatically available in the PATH without dealing with additional
locations.
Note that static build is easier to make portable, but this is not
possible for GUI tools, those that integrate python or others that rely on
dynamic loading of plugins.
Indeed... Yet, my very personal opinion is that maintaining a custom build
procedure needs to pay off due to some specific feature or use case which
is not supported by upstream solutions. In the case of fpga-toolchain or
apio, that added value was/is the portability and ease of installation, at
the cost of certain features. At the same time, when those projects were
created, many EDA tools were not upstreamed to official repositories yet.
Conversely, nowadays most of the tools are already packaged as DEB, RPM
and/or PKGBUILD recipes. Therefore, I think that salsa, copr, aur,
homebrew, nixos, etc. are a better fit for maintaining a complex multi-arch
set of tools. In fact, this is not just a comment. I expect to replace the
build procedures in hdl/containers with proper DEB and/or RPM recipes.
That's because the added value of containers is the containerization
itself. The recipes can and should be shared with "native" users.
IMVHO, your strong point is that you are the developers or relevant
contributors of most of the tools in Tabby CAD. Therefore, you have very
first hand information about upcoming challenges and potentially
conflicting changes. You can foresee the work that packagers will need to
do in the following update. You are also in a unique position for adding
the features that your clients need, and having them published ASAP. Hence,
I would like to very politely ask you to reconsider whether supporting
recipes, CI and distribution of 12+ tools on 4+ archs is something that 1-2
people can develop and maintain on their own. It is my very honest believe
that you would be more valuable for the open source EDA community if you
balanced towards focusing on communication skills; on closing any existing
gap between the development of that tools and the packagers in the major
distributions. I'm pretty sure you'd get good help if you asked the
community "we want help for having nightly DEBs and RPMs of all YosysHQ
projects". Then, you could maintain this repository (the Python part) as a
wrapper around those DEB, RPM, PKGBUILD and brew recipes. You would focus
on your expertise: the integration of the tools in a bundle (not actually
building and cross-compiling). At the same time, contributors would not
need to learn your custom plumbing, but they'd contribute with their
specific knowledge.
Please, note that I'm suggesting this because I know the effort it takes
to maintain all these tools on two different environments for amd64 only
(and very few multiarch). That is less than half of the work you explained
in your scope! In those cases, allowing contributors not to understand the
plumbing and allowing myself not to know the usage details of each tool did
help all of us move forward. Of course, you might have additional
constraints, demands and requirements which I'm not aware of. Hence,
please, accept my apologies, should you consider it intrusive.
I have added Windows support for msys2 since that seems natural, but makes
things complicated for CI and testing (if you have linux based machines
only) so I made docker based one, but still have some limitations there
(missing ADA compiler, so no GHDL build possible for now).
Honestly, I'm not sure that will work. Naturally, I suggest you to confirm
with some expert (https://gitter.im/msys2/msys2), but my understanding is
that MSYS2 cannot be used on Linux. Some users have tried using Wine, but I
don't think it works. This is because the MSYS2 project itself would
greatly benefit from building all their packages on Linux machines, but
they don't/can't. On Linux you get mingw, not MSYS2. Both projects are
similar, but not the same since long time ago. You might still be able to
build all the tools using mingw/linux, but I would be careful about naming
them MSYS2 or mixing them with actual MSYS2 packages.
Will see to improve preview of build status of packages per platform, so
it is known what users can expect to have in the final build ( there are
certain solvers that are linux only, or just can work on windows for
example).
When the different packaging solutions are slightly more mature (in a few
months), I'd like to make a table similar to
https://hdl.github.io/MINGW-packages/#_packagestools in hdl/packages,
showing the tools and versions available in each packaging solution. That
will hopefully allow users to pick the one that fits their needs: FPGA/EDA,
Verilog/VHDL/SV, sim/synth/formal, CI/embedded/workstation, etc. For a
reference, in MSYS2 they compare themselves to Arch and Cygwin:
https://packages.msys2.org/outofdate.
In time I also plan to upstream some of the changes to projects used to
make scripts easier to maintain but also those projects more compatible
with certain OS-es.
That is really nice to hear. In fact, most (if not all) YosysHQ projects
do support MSYS2 already, which really helps maintenance of packages. Must
be grateful to the people that did it.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/YosysHQ/fpga-nightly/issues/1#issuecomment-805770015,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA3UUSEL2LU46PMVI2R34G3TFHJDTANCNFSM4ZWLLVEA
.

authors: mmicko umarcor

repo: YosysHQ/fpga-nightly

license: ISC


text:
Can other conditions be used as control signals?

Thank you for such excellent work. I am very interested in your work.
Can other control conditions (semantic segmentation maps, sketches, etc.) be used as control images?
I am a little confused. Most of the research work claiming to be controllable focuses more on edge/canny maps and depth maps, and few studies focus on semantic segmentation maps and sketches (in the generative models of sdxl and Flux versions). Is it because the result is not good or there is little demand?

This is a good question. While we haven't trained the model on other control conditions such as segmentation maps and sketches, we believe OmniControl could potentially handle these tasks.
Regarding why most research works (including our OminiControl) focus on canny edge-to-image tasks -- we think it's primarily because canny edges provide a straightforward way to demonstrate a method's capability for condition controlling. Since it's relatively easy to extract canny edges from target images, this makes it convenient for implementation and experimental validation.

Thanks for your reply.
I am currently concentrating on achieving precise alignment in image generation using sparse guidance conditions, such as semantic segmentation maps and sketches.
Your work has provided me with new inspiration. I look forward to exploring more of your research and hope for the opportunity to engage in further discussions with you😊

Thank you for your interest! Feel free to reach out anytime for discussion.


text:
Config and looping

.dev file added for devc++ project file. I recommend using wxDevC++.
.h and .rc added for config dialog.
.c changed (dialog added, volume correction).
org-files that Loop will loop the number you set within the
config-dialog. Using 0 means endless. org-files that has no
looping-setting won't loop. winamp will use its shuffle-procedure
afterwards.
I also let org be played at the winamp volume. Before it was
automatically set to full-volume.
Output dll-file is inside \src\Output\MingW\
Maybe it's my lack of understanding how github works, but I guessed
having the actual output dll is also nice... That's why I also changed the .gitignore file regarding .dll-files.

When a release tag is created (see releases) you can upload the dll (or zip file containing the dll, readme, etc. as a package) to be provided as a download from that page, therefore uploading it as part of the repository itself is not required.
Perhaps I should make it more obvious by putting something in the readme.md or something though..?

ok, thanks^^
I wasn't aware of the release-feature of Github... I missed any "Release" button so far. ^^
Sometimes I still am oblivious to important features around here. ^^
I changed the .gitignore again... don't know If I have to remove the .dll manually now...

I did a cherrypick of the commit before you added the dll and committed that as a release, with an updated README.md to match. :) Thank you again!

Thanks^^
I'm still not really used to Github and similar things... until now I used a  freehoster, made some nice little php-scripts for version-control, download-counter, download-overview etc. and presented those things in respective forums.
But I guessed times have changed and currently, those platforms are probably the best way of sharing code-art-pieces that are used on a wider base... sooner or later there sure will be someone trying to make a fork or pull-request. ^^

authors: Dediggefedde Yukitty

license: WTFPL


text:
confusion about sockaddr in class net_address

What if use sockaddr_storage instead of sockaddr for both IPv4 and IPv6?
Seems  sockaddr and sockaddr_in are both 16bytes, however sockaddr_in6 is 28 bytes, would it access illegal address after converting sockaddr* into sockaddr_in6* for IPv6?

Yes you are right. sockaddr_storage has size of 128 bytes, it should be large enough to contain sockaddr_in6 (28 bytes) and sockaddr_in (16 bytes). The member variable should be of type sockaddr_storage  instead of sockaddr.
Would you like to make a PR for this issue please?

Just replace the class member of type struct sockaddr with struct sockaddr_storage should be ok, not worth a pr.  :D

like this:
private:
  mutable struct sockaddr_storage addr_ {};

And there is another example related to sockaddr_storage: https://man.archlinux.org/man/getaddrinfo.3.en#EXAMPLES

I will do it then. Thanks for pointing out this issue. Appreciated!

repo: YukunJ/Turtle


text:
Video preview is not updated after selecting a new one

Describe the bug
While selecting a video from the picker, the old video preview appears behind the new selected video preview.
To Reproduce
Steps to reproduce the behavior:

Open YPImagePicker controller
Tap on Library tab
Select a video, change the selected video to another from the grid
See error

Expected behavior
After selecting a new video from the grid the preview should only show the selected video.
Screenshots

Environment (please complete the following information):

Device: iPhoneX
iOS 13 Beta
Xcode 11 Beta 6

Installation Type

Cocoapods

Same issue. please help me if you find any solution.

@s4cha - are you able to reproduce this issue. Now I'm also seeing this:

There is 2022 year outside🎉 Old outdated issues are closing. Please search if there are already existing issues with the same problem before opening new ☮

authors: NikKovIos Sehyris YogendraPatel

repo: Yummypets/YPImagePicker


text:
关于dataset里preprocess_true_box方法

你好，在dataset.py, preprocess_true_box方法里你用了一个iou_mask来进行labeling。但是假设在三个small anchor里面有两个都是超过IOU threshold，那么你会把两个都标记为obj? 这个似乎和我理解不太一样，我以为一个ground truth box有且仅有一个对应的anchor box（IOU值最大的那个）。
而且外侧的for loop（215行）我理解的是针对small,medium,large三种boxes进行的loop。那么那个flag - exist_positive 是用来检测9个anchor里面有没有IOU大于thres。但是这个for loop不会因为这个flag变为true而中断，也就是说只要大于thres，一个ground truth box可能同时让small, medium, large三种anchor里标记为label? 这好像也违背了一个ground truth 对应一个anchor的原理。
不知道是不是我对原文章和代码理解错了。谢谢你的implementation。非常感谢。

我想我知道错在哪里了。每个anchor对应一个gt，但是每个gt可以对应多个anchor。

我想我知道错在哪里了。每个anchor对应一个gt，但是每个gt可以对应多个anchor。

我记得原文就是一个gt对应一个anchor的，preprocess true box中的复现确实有可能出现一个gt对应三种scale中的anchor的情况，我认为这个写法是有问题的，我看过qwe的yolo v3复现，那里面就是一个gt box对应一个anchor的

我记得原文就是一个gt对应一个anchor的，preprocess true box中的复现确实有可能出现一个gt对应三种scale中的anchor的情况，我认为这个写法是有问题的，我看过qwe的yolo v3复现，那里面就是一个gt box对应一个anchor的

谢谢 我去看看。那么obj 和non-obj是如何标定的呢？比如总共有9个anchor分大中小各三个，只有IOU最大的那个算obj，那剩下的我记得应该还是分两种，一种是no-obj（IOU小于threshold）；还有一种是被我们忽略了，好像是不计算loss。不知道你有没有看到qwe那个怎么写的。（IOU大于threshold但是不是max）


text:
Guacamole 1.5.2 is not available .

Hello,
Guacamole 1.5.2 is not available .
https://downloads.apache.org/guacamole/
https://downloads.apache.org/guacamole/1.5.2/source/guacamole-server-1.5.2.tar.gz:
2023-12-12 23:23:30 ERROR 404: Not Found.

Same. File has been deleted, 1.5.3 & 1.5.4 are available.

how to install the new version?

and versions 1.5.3 & 1.5.4 also give a 404 error

and versions 1.5.3 & 1.5.4 also give a 404 error

With command line : sudo yunohost app upgrade guacamole ??

Guacamole is not found in the list of installed applications and guacamole cannot be installed due to the error above :(

authors: RELTIN enamaryn julienhel61250 thomas-jardinet


text:
Too common name?

The parser seems to be quite specific in parsing only bytestring and with no backtracking and still "Scanner" looks to be very common term, wouldn't it be better to use some more unique name for it? Especially taking into account the fact of using top-level module with such a common name.
Of course I'm only speculating here but it could be at least inconvenient for some projects.

Well, I don't know. We have -XPackageImports anyway. I always thought that prefixes like Data, Control, Graphics etc are ugly and unnecessary, but it is just an opinion. Having top level module name to be the same as package name seems reasonable for me.
Re package name, I think scanner perfectly reflects non-backtracking nature of the parser. Image scanner never goes back to rescan the already scanned area. And it is basically what scan from attoparsec does: https://hackage.haskell.org/package/attoparsec-0.13.0.1/docs/Data-Attoparsec-ByteString.html#v:scan
I have plans (not immediate though) to extend the package to work with Text and probably other containers. Probably Scanner.ByteString module name will work better in that case. I'm not sure actually.

If you have no plans to change the name then probably you should close the issue as "won't fix" :)

OK, lets close it for now. But I certainly should think about module name.
Thank you.

authors: Yuras qrilka

repo: Yuras/scanner


text:
Accessory not showing up for pairing any longer?

@Yurik72 I'm experiencing strange problem. So is friend of mine @mlanziner who is trying the same thing on different computer. The problem is that after successful compiling of the new example, the accessory does not show up as accessory available for pairing. Now even my old code that I sent you before for DHT11 is behaving the same.
On very rare occasions I see the accessory showing up or pairing but then it does not complete the paring process successfully on the iPhone. On the terminal window it shows pairing is successful, but is usually much shorter on messages that what I've seen before when it use to actually do pair successfully.
I tried formating the entire flash, and formating the SPIFS as well. No luck.
Here is the log from my serial terminal after reboot and one of the rare cases that it showed for pairing but actually failed pairing on the iPhone. your example code has not been changed, except I added format for SPIFFS and change the pin for DHT11 to GPIO2
`ets Jan  8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1392, room 16
tail 0
chksum 0xd0
csum 0xd0
v3d128e5c
~ld
Please wait few seconds for SPIFFS to be formatted
SPIFFS formatted
Grapevine
..
IP address:
192.168.1.107
Free heap: 36336
init_hap_storageFailed to read pair.dat

Home Integration: hap_services added chararacteristic  0: 23
Home Integration: hap_services added chararacteristic  1: 11
Home Integration: add_hum as accessory , next accessory 2
Home Integration: homekit_is_paired 0
HomeKit: Update the CPU to run at 160MHz
HomeKit: Free heap: 33424
HomeKit: Starting server
HomeKit: Formatting flash at 0x200000
HomeKit: storage init 1
HomeKit: if r
HomeKit: generating id
HomeKit: Generated new accessory ID: 82:A8:A3:40:34:B5
HomeKit: Generated new accessory ID: 1073688596
HomeKit:  key generated
HomeKit:  key saved
HomeKit: Generated new accessory key
HomeKit: find pairings
HomeKit: Preinit pairing context
HomeKit: Using user-specified password: 111-11-111
HomeKit: Free heap: 30800
HomeKit: Calculating public key len=384
HomeKit: Calculating public key result 0
HomeKit: arduino_homekit_preinit success
HomeKit: Configuring mDNS
HomeKit: MDNS.begin: ES-F118, IP: 192.168.1.107
HomeKit: Init server over
Web server is NOT SET, waiting for pairing
Temp21.90  Hum:62.00
Temp24.00  Hum:44.00
Temp24.10  Hum:43.00
HomeKit: WiFi connected, ip: 192.168.1.107, mask: 255.255.255.0, gw: 192.168.1.254
HomeKit: Configuring mDNS
HomeKit: MDNS.restart: ES-F118, IP: 192.168.1.107
HomeKit: MDNS.begin: ES-F118, IP: 192.168.1.107
Temp24.20  Hum:42.00
Temp24.30  Hum:41.00
Temp24.40  Hum:40.00
HomeKit: WiFiServer receives a new client (current 0, max 4)
HomeKit: Got new client connection: local 192.168.1.107:5556, remote 192.168.1.104:56576
HomeKit: [Client 1073696140] Got 125 incomming data, encrypted is
HomeKit: [Client 1073696140] Pair Setup Step 1/3
HomeKit: [Client 1073696140] Got 578 incomming data, encrypted is
HomeKit: [Client 1073696140] Pair Setup Step 2/3
HomeKit: [Client 1073696140] Computing SRP shared secret
HomeKit: [Client 1073696140] Verifying peer's proof
HomeKit: [Client 1073696140] Generating own proof
Temp24.50  Hum:40.00
HomeKit: [Client 1073696140] Got 280 incomming data, encrypted is
HomeKit: [Client 1073696140] Pair Setup Step 3/3
HomeKit: Added pairing with 31C042E2-1767-4A74-8CF9-AF735720357B
HomeKit: Free saved_preinit_pairing_context
HomeKit: Configuring mDNS
HomeKit: MDNS.restart: ES-F118, IP: 192.168.1.107
HomeKit: MDNS.begin: ES-F118, IP: 192.168.1.107
HomeKit: [Client 1073696140] Successfully paired
HomeKit: [Client 1073696140] Disconnected!
HomeKit: Free heap: 29656
HomeKit: [Client 1073696140] Closing client connection
Temp24.90  Hum:39.00
Temp25.00  Hum:39.00
Temp25.20  Hum:38.00
Temp25.40  Hum:38.00
Temp25.60  Hum:37.00
Temp25.80  Hum:37.00

`
and here is an example of what ussulay shows on the serial terminal screen after reboot, but nothing chows as available to pair in home kit:
`
ets Jan  8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1392, room 16
tail 0
chksum 0xd0
csum 0xd0
v3d128e5c
~ld
Please wait few seconds for SPIFFS to be formatted
SPIFFS formatted
Grapevine
.....
IP address:
192.168.1.107
Free heap: 36336
init_hap_storageFailed to read pair.dat

Home Integration: hap_services added chararacteristic  0: 23
Home Integration: hap_services added chararacteristic  1: 11
Home Integration: add_hum as accessory , next accessory 2
Home Integration: homekit_is_paired 0
HomeKit: Update the CPU to run at 160MHz
HomeKit: Free heap: 33424
HomeKit: Starting server
HomeKit: Formatting flash at 0x200000
HomeKit: storage init 1
HomeKit: if r
HomeKit: generating id
HomeKit: Generated new accessory ID: 0F:57:B3:66:17:F2
HomeKit: Generated new accessory ID: 1073688596
HomeKit:  key generated
HomeKit:  key saved
HomeKit: Generated new accessory key
HomeKit: find pairings
HomeKit: Preinit pairing context
HomeKit: Using user-specified password: 111-11-111
HomeKit: Free heap: 30800
HomeKit: Calculating public key len=384
HomeKit: Calculating public key result 0
HomeKit: arduino_homekit_preinit success
HomeKit: Configuring mDNS
HomeKit: Init server over
Web server is NOT SET, waiting for pairing
Temp26.30  Hum:50.00
Temp26.00  Hum:42.00
HomeKit: WiFi connected, ip: 192.168.1.107, mask: 255.255.255.0, gw: 192.168.1.254
HomeKit: Configuring mDNS
HomeKit: MDNS.begin: ES-66DD, IP: 192.168.1.107
Temp25.80  Hum:39.00
Temp25.80  Hum:38.00
Temp25.80  Hum:38.00
Temp25.80  Hum:38.00
Temp25.70  Hum:37.00
Temp25.80  Hum:38.00
Temp25.70  Hum:38.00
`
My buddy's problem is exactly the same as mine, except I don't think he've seen the accessory available for pairing on rare occasion. I wonder if some update screw the working of the mDNS or something else.
Any ideas?
Cheers!

Hi, from the your description i clearly see a problem with mDNS because

You mentioned that device is not always appears for the pairing or with delay
Pairing log shows that pairing done for the 50% , after first 3 step, device should switch mDNS and apple should send Pairing verification and get accessories requests, by using new mDNS record, which is not happens :(

Therefore i can propose several ways/steps to find out this problem, At least i'm pretty sure that problem is not on the library code, because a lot of guys did that successfully, so

You mentioned about problem when compiling on other computer. please check his environment
as i mentioned on read.me it should be
ESP32 board library version 1.0.4
ESP8266 board library version 2.6.3
Arduino version 1.8.12

Install mDNS browser like this  https://chrome.google.com/webstore/detail/mdns-browser/kipighjpklofchgbdgclfaoccdlghidp
And you should see mDNS record appears quite immediately after device switched on (in both mode pairing and not pairing). Control this process due to the pairing.

Check your Wifi hardware, this is continuation of step 2. In my experience with some routers it's happens, the problem can be solved by upgrading new router firmware or simple reboot

Check exactly this device in other Home Wifi enviropment

After did that please reply i will see what we can do else

the same #37

the same #37


text:
Where can I refer to the code for visualizing the results?

Hello, I have completed the production of the seed label according to the ReadMe tutorial. How can I visualize these results like the images in the paper?

@YurongYou @katieluo88 Looking forward to your reply, thank you very much.

Hi Truring, thanks for your interest! The visualization code is not included in this codebase, and we suggest you refer to other general 3D visualization codebase for visualization (e.g. https://mmdetection3d.readthedocs.io/en/latest/user_guides/visualization.html)

authors: Truring YurongYou

repo: YurongYou/MODEST


text:
Remove AD claim Provider

Hi Yvan,
After enableing the AzureCP Trusted Identity Provider on the web application for Azure AD, We need to enable Windows Authentication (which is required for Search Crawling account on the Default zone), and i have also hide the Window AD claim Provider using below script using given blog.
$cpm = Get-SPClaimProviderManager
$cp = Get-SPClaimProvider -Identity "AD"
$cp.IsVisible = $false
$cpm.Update()
https://blog.octavie.nl/index.php/2019/07/09/managing-the-peoplepicker-when-custom-claims-providers-exist
But the issue is - 80% User getting window ID in People picker suggestion from cache and it save in SharePoint list like 'i:0#.w|domainname\Username and it takes to wrong data save.
I am looking any way if we can disable window ID  therefore when it is come from cache then while saving its give error that User does not exists. or any other way to clear people picker cache from script.
Your early response is highly appreciate as we have already gone on production.
Regards
Gaurav

HI Yvan,
Do we setup AzureAD authentication on any other zone . Will AzureCP support or it is supports only on Default zone. i am looking alternate to crawl search as Search can only crawl with default zone then OWA is working otherwise lots of issue coming.
Please help
Regards
Gaurav

Please help to resolve this issue.
Regards
Gaurav

AzureCP returns entities from any zone, as long as it is enabled in at least 1 zone.

authors: Yvand gauravPOC

repo: Yvand/AzureCP


text:
🛑 Official Website is down

In 405ba70, Official Website (https://www.zeenkey.com) was down:

HTTP code: 500
Response time: 308 ms

Resolved: Official Website is back up in d20b974.

repo: ZEENKEY/statuspage


text:
🛑 ZEENKEY BLOG is down

In 7129e42, ZEENKEY BLOG (https://blog.zeenkey.com) was down:

HTTP code: 500
Response time: 198 ms

Resolved: ZEENKEY BLOG is back up in 502231c.