tools/gen_gpu_fill3_report.py が実測ログ(docs/perf/logs/fill3_*.json)と実装台帳から生成する。数字を手で書かない。採用規則は parity 差 < 5e-3(torch CPU と GPU の両方)かつ実寸倍率 >= 5.0x。
| HALCON 名 | Fullseye op | parity 差 CPU/GPU | 寸法 | CPU s | GPU s | 倍率 | 採否 | 理由 |
|---|---|---|---|---|---|---|---|---|
abs_diff_image |
abs_diff_image |
1.5e-07 / 1.5e-07 | 2048² x50 | 3.6 | 1.3 | 2.9x | 不採用 | 実寸 2.9x(閾値 5.0x 未満) |
abs_image |
abs_image |
3.0e-08 / 3.0e-08 | 2048² x50 | 1.5 | 0.883 | 1.7x | 不採用 | 実寸 1.7x(閾値 5.0x 未満) |
acos_image |
acos_image |
6.7e-08 / 6.3e-08 | 2048² x50 | 2.8 | 0.899 | 3.1x | 不採用 | 実寸 3.1x(閾値 5.0x 未満) |
add_image |
add_image |
2.0e-07 / 2.0e-07 | 2048² x50 | 3.4 | 1.3 | 2.6x | 不採用 | 実寸 2.6x(閾値 5.0x 未満) |
affine_trans_image |
affine_trans_image |
4.1e-07 / 3.8e-07 | 2048² x50 | 14.9 | 0.992 | 15.0x | 採用 | 実寸 15.0x |
affine_trans_image |
affine_warp |
4.1e-07 / 3.8e-07 | 2048² x50 | 14.8 | 0.976 | 15.1x | 採用 | 実寸 15.1x |
affine_trans_image_size |
affine_trans_image_size |
4.1e-07 / 3.8e-07 | 2048² x50 | 14.3 | 1.0 | 14.3x | 採用 | 実寸 14.3x |
asin_image |
asin_image |
9.8e-08 / 1.3e-07 | 2048² x50 | 2.7 | 0.972 | 2.8x | 不採用 | 実寸 2.8x(閾値 5.0x 未満) |
atan_image |
atan_image |
5.6e-08 / 7.2e-08 | 2048² x50 | 2.4 | 0.891 | 2.6x | 不採用 | 実寸 2.6x(閾値 5.0x 未満) |
cfa_to_rgb |
cfa_to_rgb |
— / — | 2048² x50 | 4.3 | — | — | 不採用 | 包み: 本体は cv2.cvtColor の Bayer 補間(8 bit 経由) |
convol_image |
convol_image@9x9 |
2.5e-07 / 2.5e-07 | 2048² x50 | 6.5 | 0.966 | 6.7x | 採用 | 実寸 6.7x |
convol_image |
convol_image@31x31 |
6.6e-07 / 6.6e-07 | 2048² x50 | 85.8 | 0.907 | 94.6x | 採用 | 実寸 94.6x |
derivate_gauss |
derivate_gauss |
1.1e-06 / 1.1e-06 | 2048² x50 | 10.1 | 1.3 | 8.0x | 採用 | 実寸 8.0x |
div_image |
div_image |
1.5e-07 / 1.5e-07 | 2048² x50 | 3.1 | 1.3 | 2.5x | 不採用 | 実寸 2.5x(閾値 5.0x 未満) |
edges_sub_pix |
edges_sub_pix |
— / — | — | — | — | — | 不採用 | 出力が可変長の輪郭点列(画素一致の parity が定義できない。前段の勾配だけ GPU にしても点列化が CPU に残る) |
exp_image |
exp_image |
9.8e-08 / 9.9e-08 | 2048² x50 | 2.4 | 0.903 | 2.7x | 不採用 | 実寸 2.7x(閾値 5.0x 未満) |
gamma_image |
gamma_image |
9.6e-08 / 9.6e-08 | 2048² x50 | 2.6 | 1.1 | 2.5x | 不採用 | 実寸 2.5x(閾値 5.0x 未満) |
linear_trans_color |
linear_trans_color |
1.0e-07 / 1.0e-07 | 2048² x50 | 5.9 | 2.7 | 2.2x | 不採用 | 実寸 2.2x(閾値 5.0x 未満) |
lines_gauss |
lines_gauss |
— / — | — | — | — | — | 不採用 | 出力が可変長の輪郭点列。別名の sk_frangi / sk_hessian / sk_meijering は scikit-image の包み |
log_image |
log_image |
9.3e-08 / 1.1e-07 | 2048² x50 | 2.3 | 0.914 | 2.5x | 不採用 | 実寸 2.5x(閾値 5.0x 未満) |
lut_trans |
f2_lut_trans |
3.0e-08 / 3.0e-08 | 2048² x50 | 7.9 | 0.983 | 8.0x | 採用 | 実寸 8.0x |
max_image |
max_image |
3.0e-08 / 3.0e-08 | 2048² x50 | 1.7 | 1.2 | 1.4x | 不採用 | 実寸 1.4x(閾値 5.0x 未満) |
median_rect |
median_rect |
3.0e-08 / 3.0e-08 | 2048² x50 | 70.1 | 2.1 | 33.3x | 採用 | 実寸 33.3x |
min_image |
min_image |
3.0e-08 / 3.0e-08 | 2048² x50 | 1.9 | 1.3 | 1.4x | 不採用 | 実寸 1.4x(閾値 5.0x 未満) |
mirror_image |
mirror_image |
3.0e-08 / 3.0e-08 | 2048² x50 | 0.570 | 0.910 | 0.6x | 不採用 | 実寸 0.6x(閾値 5.0x 未満) |
mult_image |
mult_image |
1.5e-07 / 1.5e-07 | 2048² x50 | 3.5 | 1.4 | 2.5x | 不採用 | 実寸 2.5x(閾値 5.0x 未満) |
polar_trans_image_ext |
polar_trans_image_ext |
— / — | 2048² x50 | 2.1 | — | — | 不採用 | 包み: 本体は cv2.warpPolar(polar_trans_image と同じ) |
polar_trans_image_inv |
polar_trans_image_inv |
— / — | 2048² x50 | 8.9 | — | — | 不採用 | 包み: 本体は cv2.warpPolar + WARP_INVERSE_MAP |
principal_comp |
principal_comp |
9.9e-08 / 9.9e-08 | 2048² x50 | 21.5 | 3.1 | 6.9x | 採用 | 実寸 6.9x |
rgb1_to_gray |
rgb1_to_gray |
5.4e-08 / 5.4e-08 | 2048² x50 | 5.5 | 1.7 | 3.2x | 不採用 | 実寸 3.2x(閾値 5.0x 未満) |
rgb3_to_gray |
rgb3_to_gray |
5.4e-08 / 5.4e-08 | 2048² x50 | 5.3 | 1.7 | 3.2x | 不採用 | 実寸 3.2x(閾値 5.0x 未満) |
rotate_image |
rotate_image |
3.7e-07 / 4.0e-07 | 2048² x50 | 14.4 | 1.1 | 13.6x | 採用 | 実寸 13.6x |
rotate_image |
rotate_img |
3.7e-07 / 4.0e-07 | 2048² x50 | 14.4 | 0.992 | 14.5x | 採用 | 実寸 14.5x |
sin_image |
sin_image |
2.1e-07 / 2.1e-07 | 2048² x50 | 3.8 | 0.911 | 4.2x | 不採用 | 実寸 4.2x(閾値 5.0x 未満) |
sqrt_image |
sqrt_image |
5.0e-08 / 5.0e-08 | 2048² x50 | 1.6 | 0.985 | 1.6x | 不採用 | 実寸 1.6x(閾値 5.0x 未満) |
sub_image |
sub_image |
1.4e-07 / 1.4e-07 | 2048² x50 | 3.1 | 1.4 | 2.1x | 不採用 | 実寸 2.1x(閾値 5.0x 未満) |
tan_image |
tan_image |
4.1e-07 / 3.8e-07 | 2048² x50 | 5.4 | 1.0 | 5.1x | 採用 | 実寸 5.1x |
texture_laws |
texture_laws |
1.8e-06 / 1.8e-06 | 2048² x50 | 11.4 | 1.1 | 10.2x | 採用 | 実寸 10.2x |
trans_from_rgb |
trans_from_rgb |
— / — | 2048² x50 | 7.3 | — | — | 不採用 | 包み: 本体は cv2.cvtColor(8 bit、Lab/XYZ は OpenCV の固定小数点表) |
trans_to_rgb |
trans_to_rgb |
— / — | 2048² x50 | 7.9 | — | — | 不採用 | 包み: 本体は cv2.cvtColor(HSV2RGB、8 bit) |
zoom_image_factor |
rescale_img |
4.2e-07 / 3.7e-07 | 2048² x50 | 3.0 | 0.923 | 3.3x | 不採用 | 実寸 3.3x(閾値 5.0x 未満) |
zoom_image_factor |
zoom_image_factor |
3.8e-07 / 3.9e-07 | 2048² x50 | 15.4 | 1.000 | 15.4x | 採用 | 実寸 15.4x |
zoom_image_size |
zoom_image_size |
1.2e-07 / 1.2e-07 | 2048² x50 | 4.5 | 0.900 | 5.0x | 不採用 | 実寸 5.0x(閾値 5.0x 未満) |
convert_image_type |
it_convert_image_type |
3.0e-08 / 7.4e-08 | 2048² x50 | 4.0 | 0.932 | 4.3x | 不採用 | 実寸 4.3x(閾値 5.0x 未満) |
crop_domain |
it_crop_domain |
3.0e-08 / 3.0e-08 | 2048² x50 | 3.3 | 1.0 | 3.3x | 不採用 | 実寸 3.3x(閾値 5.0x 未満) |
crop_part |
it_crop_part |
1.2e-06 / 1.2e-06 | 2048² x50 | 9.0 | 0.885 | 10.2x | 採用 | 実寸 10.2x |
crop_rectangle1 |
it_crop_rectangle1 |
5.9e-07 / 6.0e-07 | 2048² x50 | 7.9 | 0.898 | 8.8x | 採用 | 実寸 8.8x |
polar_trans_image |
polar_trans_image |
— / — | 2048² x50 | 2.1 | — | — | 不採用 | 包み: 本体は cv2.warpPolar(座標を 1/32 画素へ丸める固定小数点) |
gray_closing_shape |
gray_closing_shape |
3.0e-08 / 3.0e-08 | 2048² x50 | 3.8 | 0.929 | 4.1x | 不採用 | 実寸 4.1x(閾値 5.0x 未満) |
gray_dilation_shape |
gray_dilation_shape |
3.0e-08 / 3.0e-08 | 2048² x50 | 1.9 | 0.899 | 2.2x | 不採用 | 実寸 2.2x(閾値 5.0x 未満) |
gray_erosion_shape |
gray_erosion_shape |
3.0e-08 / 3.0e-08 | 2048² x50 | 2.2 | 0.949 | 2.3x | 不採用 | 実寸 2.3x(閾値 5.0x 未満) |
gray_opening_shape |
gray_opening_shape |
3.0e-08 / 3.0e-08 | 2048² x50 | 3.5 | 0.907 | 3.9x | 不採用 | 実寸 3.9x(閾値 5.0x 未満) |
| op | parity 差 CPU/GPU(相対) | 入力 | CPU s | GPU s | 倍率 | 採否 | 理由 |
|---|---|---|---|---|---|---|---|
radon_transform |
1.4e-08 / 1.4e-08 | 1024² 180 views | 69.6 | 0.232 | 299.3x | 採用 | 実寸 299.3x |
radon_volume |
1.9e-08 / 1.9e-08 | 8 x 512² 180 views | 168.0 | 0.471 | 356.4x | 採用 | 実寸 356.4x |
backproject_sinogram |
1.8e-08 / 1.8e-08 | 1024² 180 views | 9.6 | 0.037 | 259.1x | 採用 | 実寸 259.1x |
filtered_backprojection |
2.6e-08 / 2.6e-08 | 1024² 180 views | 9.5 | 0.039 | 244.2x | 採用 | 実寸 244.2x |
fbp_volume |
2.6e-08 / 2.6e-08 | 8 x 512² 180 views | 23.4 | 0.086 | 271.7x | 採用 | 実寸 271.7x |
sart_reconstruct |
5.6e-08 / 5.6e-08 | 256² 180 views 3 sweeps | 22.5 | 0.907 | 24.8x | 採用 | 実寸 24.8x |
piv_cross_correlate |
5.5e-16 / 7.3e-16 | 2048² win32 ov0.5 | 1.8 | 0.024 | 74.3x | 採用 | 実寸 74.3x |
piv_multipass |
8.2e-16 / 6.4e-16 | 2048² win64/32 | 2.8 | 0.048 | 57.9x | 採用 | 実寸 57.9x |
piv_ensemble_correlate |
1.8e-15 / 2.0e-15 | 16 x 1024² win32 | 1.7 | 0.036 | 47.4x | 採用 | 実寸 47.4x |
plane_sweep_depth |
1.1e-15 / 1.1e-15 | 1024² 64 depths win5 | 13.6 | 0.080 | 169.8x | 採用 | 実寸 169.8x |
joint_bilateral |
1.1e-06 / 1.1e-06 | 2048² sigma 3 | 70.9 | 1.4 | 50.6x | 採用 | 実寸 50.6x |
temporal_bilateral |
1.9e-07 / 1.9e-07 | 60 x 1024² window 5 | 14.4 | 0.512 | 28.1x | 採用 | 実寸 28.1x |
voxel_grid_downsample |
0.0e+00 / 5.9e-16 | 1e7 points | 30.9 | 0.081 | 379.3x | 採用 | 実寸 379.3x |
occupancy_grid |
0.0e+00 / 0.0e+00 | 1e7 points 256³ | 1.2 | 0.035 | 33.8x | 採用 | 実寸 33.8x |
photometric_stereo |
1.5e-07 / 1.8e-07 | 12 x 2048² | 0.530 | 0.159 | 3.3x | 不採用 | 実寸 3.3x(閾値 5.0x 未満) |
points_to_voxel |
0.0e+00 / 0.0e+00 | 1e7 points 256³ | 1.6 | 0.798 | 2.0x | 不採用 | 実寸 2.0x(閾値 5.0x 未満) |
scene_flow_lk |
0.0e+00 / 2.1e-05 | 128³ | 16.7 | 0.060 | 278.3x | 採用 | 実寸 278.3x |
| op | 理由 |
|---|---|
render_optscene_gi |
未着手: 入出力が table のシーン記述で、放射度の反復と可視判定が Python 分岐に絡む。parity の基準場面の設計から要る |
render_transport |
未着手: 投影パターン積は pointwise だが、入口が光輸送行列 table。実寸の行列の用意が要る |
transport_matrix_radiosity |
未着手: 密行列の解法(GPU 向き)だが実寸の場面定義が未定 |
render_optscene |
未着手: 入力がシーン記述で、材質ごとの分岐が多い。基準場面の設計から要る |
gs_render |
未着手: gsplatnp は numpy の深度順合成で、torch 版 gsplat_torch は別 API・別入力。parity の対応づけが未確認 |
gs_render_fn |
未着手: gs_render の閉包を返す op(gs_render と同時でないと意味がない) |
gs_from_world |
計算が小さい前処理(面にガウシアンを貼る)。GPU 必須の名簿に居る根拠が弱い。名簿の見直し候補 |
gs_update |
計算が小さい更新式(einsum 1 回)。GPU 必須の名簿に居る根拠が弱い。名簿の見直し候補 |
tm_sart_reconstruct |
包み: 本体は skimage.transform.iradon_sart |
tm_fbp_reconstruct |
包み: 本体は skimage.transform.iradon |
tm_radon_forward |
包み: 本体は skimage.transform.radon(in-house の radon_transform は別実装で値が違う) |
photometric_stereo_robust |
未着手: 3 灯部分集合ごとの逐次解 + 中央値/合意。バッチ解は書けるが便の範囲外 |
icp_point2point_3d |
未着手: 再現性のため _oz.matmul_reproducible(和の順序固定)を使う。float 和の順序が違う GPU とは設計上ぶつかる |
icp_point2plane |
未着手: icp_point2point_3d と同じく再現性の固定和を使う |
gicp |
未着手: 同じ再現性の固定和 + KD 木の最近傍 |
register_fpfh |
未着手: KD 木の特徴一致と RANSAC の組で、乱数列まで一致させる parity が要る |
register_cpd_rigid |
未着手: 全点対距離の EM は GPU 向きだが便の範囲外 |
fuse_to_voxel |
未登録のまま: 中身は points_to_voxel(第 3 便で測定)を呼ぶ。入力は any で parity の定型入力を決めていない |
physarum_transport_image |
未着手: 格子グラフの疎行列解。torch に scipy の疎直接法と一致する解法が無い |
graph_physarum_transport |
未着手: 公開 op に device 引数が無い(_run 経由の密行列解)。parity 未確認 |
physarum_route |
未着手: _run は device を受けるが密行列解で、実寸の格子は n^2 × n^2 の密行列が VRAM を超える |
graph_physarum_path |
未着手: 公開 op に device 引数が無い(_run 経由の密行列解)。parity 未確認 |
robust_gaussian_surface |
未着手: IRLS の畳み込み反復は GPU 向きだが便の範囲外 |
robust_spline_profile |
原理的に CPU 向き: 本体は帯行列の直接解(linalg.solve_banded)の反復 |
focus_sweep_surface_video |
未着手: 高さ推定 + 描画の複合 op。部品ごとの計測が要る |
solid_angle_sweep |
計算が小さい走査(Python ループ + 数式)。GPU 必須の名簿に居る根拠が弱い。名簿の見直し候補 |
sk_nlm |
包み: 本体は skimage.restoration.denoise_nl_means(計算量は大きいので次便の自前実装候補) |
cv_nlmeans |
包み: 本体は cv2.fastNlMeansDenoising(8 bit、整数距離表) |
bilateral_filter |
包み: 本体は cv2.bilateralFilter(実測の CPU 秒は下の補足表) |
cv_bilateral |
包み: 本体は cv2.bilateralFilter(実測の CPU 秒は下の補足表) |
optical_flow_magnitude_stream |
未着手: 本体は flow.optical_flow_lk のピラミッド LK。stateful な stream の分解が要る |
| op | 2048² x50 CPU s |
|---|---|
bilateral_filter |
1.3 |
cv_bilateral |
1.3 |
転送床(下記)の 5 倍を CPU が下回るので、仮に核を書いても 5.0x に届かない(a=0.5 の窓幅で測定)。
notes placeholder