ホーム » 2020

年別アーカイブ: 2020

2024年3月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

カテゴリー

アーカイブ

ブログ統計情報

  • 74,864 アクセス

VC でのプロファイル

VC 6 の頃はよく使っていたが…
VC 12 では何故かうまく動かなかった.
VC 14 で簡単に動作を確認すると,前より使い易くなっている.


メニューの「分析」-「パフォーマンス プロファイラー」.
VC 14 「メニュー」-「分析」-「パフォーマンス プロファイラー」
「CPU 使用率」にチェックを付けて「開始」.
プロファイル用にビルドされて exe が起動する.
テストする操作を行い exe を終了させる.
暫くすると結果が表示される(この情報の見方はよくわからず).
VC 14 プロファイル exe を終了した後に表示される「概要」?
CPU のグラフの下の「詳細なレポートを作成します…」を「クリック」.
プロファイラ 詳細なレポート 概要
上の方のドロップダウンから「関数」を選択.
表示された関数名のリストから関数をダブルクリック(ここでは CF_GetOuterLine ).
CF_GetOuterLine の「関数コード ビュー」
ちょっと意外だったが,Vd3A の代入に時間がかかっている.


2020/12/23
Vd3A の代入ではなく参照にコードを変更.
テストする exe も,もう少し機能を単純化したものを使用.
VC 14 プロファイル Vd3A の「代入」を「参照」に変更
データにもよるが,該当部分の時間が半分位になった.


更にループ内の Vd3 も参照にしてみたが,こちらは効果なし.

typedef	Vector3<double> 	Vd3 ;		//  3D 座標 ( double の x , y , z ) 
typedef	std::vector<Vd3>	Vd3A ;		//  3D 座標の配列 

Vd3A は可変長で,メモリの確保と解放が伴うためと思われる.
std::vector の配列の要素に対する操作の逆アセンブル表示
* デバッグ版のため実際のコード(計測した Release 版)とは異なると思う.
1 回の「面の結合」

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

SetConsoleCtrlHandler

コンソール AP で,キー入力による中断ができないかと…
やりたいことは,時間がかかるコンソール AP で,その途中までの計算結果を保存すること.
コンソールアプリ 中断」で検索すると ::SetConsoleCtrlHandler を使えば良さそう.
MSDN を「PHANDLER_ROUTINE」で検索.次のサンプルが見つかった.
NSDN 2001/10 PHANDLER_ROUTINE
そのタイトル「Registering a Control Handler Function」で検索.
コントロール ハンドラー関数の登録
https://www.installsetupconfig.com/win32programming/
https://www.installsetupconfig.com/win32programming/winconsolecharapplication8index.html

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

FBX SDK と #pragma comment

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

#pragma message ( … (value) )

FBX SDK を使用したプロジェクトで,コンパイル時 FBX SDK のバージョンを表示したくなった.
FBX 2013.3 SDK 位からは FBXSDK_VERSION_STRING が使える.

#ifdef	FBXSDK_VERSION_STRING
	#pragma	message	("FBXSDK_VERSION " FBXSDK_VERSION_STRING)
#endif

それより古い場合に,コンパイルオプションで FS_VER=201100 などと指定する様にした.
考え方や動作は意図した通りになったが,この FS_VER を表示できないものかと…
検索すると VC では _CRT_STRINGIZE が使えるとあった.
コンパイル時に#defineの値を表示するにはどうすればよいですか?

#ifdef	FS_VER
	#pragma	message	("FS_VER " _CRT_STRINGIZE(FS_VER))
#endif

_CRT_STRINGIZE は …\VC\include\crtdefs.h や …\VC\include\vcruntime.h に定義されている.


古い VC などでも使える様に…

#ifndef		__CRT_STRINGIZE
	#define	__CRT_STRINGIZE(Value)	#Value
#endif
#ifndef		_CRT_STRINGIZE
	#define	_CRT_STRINGIZE(Value)	__CRT_STRINGIZE(Value)
#endif

https://python5.com/q/uxqhkyvx
#pragma message (_CRT_STRINGIZE(FS_VER))

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

QNAP NAS ファン異常?

11月末位からファンのエラーの通知が来る様になった.

NAS 名: TS253D
重大度: Error
日付/時刻: 2020/12/07 13:40:09

アプリ名: ハードウェアの状態
カテゴリー: ファン
メッセージ: [ハードウェアの状態] システムファン1に故障が発生しました。

このエラーは「システム温度」が 25℃を下回ると発生する様子.
「スマートファン」の設定は「温度閾値に応じて速度を調節」にしている.
TS-253D 「コントロールパネル」-「システム」-「ハードウェア」-「スマートファン」-「温度閾値に応じて速度を調節」


検索しても特に情報が引っ掛からない.
それで「ユニスター」さんに問合せをかけてみたが,あまり有効な情報は得られなかった.
「温度閾値に応じて…」の設定にしている環境は少ないのかもしれない.


夏場でない限り,システム温度やディスクの温度が問題になることはないと思う.
「スマートファン」の設定を「温度をモニターし,それに応じて速度を調節」-「パフォーマンスモード」に変更.
この設定で 25℃を下回っていても,ファン速度は「1170 RPM」前後になっている.
TS-253D 「スマートファン」-「温度をモニターし,それに応じて速度を調節」-「パフォーマンスモード」


2022/12/19
一年前はどうだったかわからないが,今のバージョン(QTS 5.0.1.2248 Build 20221215)では解消されている?
もう少し気温が下がらないと何とも言えないが,ファン速度は 1080 RPM で安定している.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

MFC DLL error C2371 cerr

FBX SDK を使用したテストプロジェクト.
以前「MFC を使用する」になっていたもの.
関連するコードを変更して「MFC を使用しない」に書き換え.
そのままのコードを「MFC を使用する」に戻すと,…

--------------------構成: T_FBX - Win32 DebugM--------------------
コンパイル中...
T_FBX.cpp
c:\program files\microsoft visual studio\vc98\mfc\include\afx.h(1941) : error C2371: 'cerr' : 再定義されています。異なる基本型です。
        c:\program files\microsoft visual studio\vc98\include\iostream(19) : 'cerr' の宣言を確認してください。
nothing   FS_VER
  VC 6    200508
cl.exe の実行エラー

T_FBX.exe - エラー 1、警告 0

MFC を使用する方法に戻してエラー C2371
前に変更しているが,元に戻す方が良いのか?
そもそもこの部分を削除した方が良いか?
https://dev.mish.work/wordpress/2020/04/17/rc1047-c2679/


今回は i_define.hxx から次の部分を削除.

#ifdef	_MSC_VER
	#ifdef		_MFC_VER
	#else
		#ifndef	afxDump
		#define	afxDump		std::terr
		#endif
	#endif
#endif

必要があれば i_debug.hxx に追加する.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

なんかおかしい? DS116 localtime

2020/12/02 0 時過ぎ,個人的に書いているコードがうまく動作していないことに気づいた.
全てではないが,日時の表示が GMT になってしまっている?
うまく動作しているものもあり,次のものは正しく表示される.
DrawNow アクセス日時を WebGL で表示する
この様になった心当たりはある.
昨日 opkg の update と upgrade ,opkg install gcc などを行ったことが影響している?
tree … -D や cal なども GMT になっている.


どこが影響しているかを調べるために少しコードを書いてみた.

#include	<clocale>
#include	<iostream>
#include	"_tdefine.hxx"
#include	"timefmt.hxx"

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		tstring	now_time = ::Now_Format() ;
		std::tout << _T("::Now_Format()   \t") << now_time << std::endl ;
		}
	{
		tstring	gmt_time = ::Now_FormatGMT() ;
		std::tout << _T("::Now_FormatGMT()\t") << gmt_time << std::endl ;
		}
	return	0 ;
	}

Win10 環境では意図した動作.

Microsoft Windows [Version 10.0.18363.1198]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\Iwao>\\TestXP\C_Temp\Test_cpp\t_mtime\t_localt\Release.060\t_localt.exe
::Now_Format()          2020/12/02 10:22:34
::Now_FormatGMT()       2020/12/02 01:22:34

C:\Users\Iwao>  

Win10 で localtime


DS116 では localtime が正しく求まっていない.

Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$ ll
total 44
drwxrwxrwx+ 2 Iwao users  4096 Dec  2 10:19 .
drwxrwxrwx+ 5 Iwao users  4096 Dec  2 10:03 ..
-rwxrwxrwx  1 Iwao users 14188 Dec  2 10:19 a.out
-rwxrwxrwx+ 1 Iwao users   892 Dec  2 10:02 t_localt.BAK
-rwxrwxrwx+ 1 Iwao users   917 Dec  2 10:17 t_localt.cpp
-rwxrwxrwx+ 1 Iwao users  4476 Dec  2 10:02 t_localt.dsp
Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$ ./a.out
::Now_Format()          2020/12/02 01:24:30
::Now_FormatGMT()       2020/12/02 01:24:30
Iwao@DS116:~/gcc_test/Test/t_linux/t_mtime/t_localt$  

DS116 で localtime


上の WebGL で現在日時を表示ている .out は,2017/07/19 にコンパイルしたもの.
他の .out で,古いものは正しく動作し,2020/02 のものはうまくない.


どこかに設定などがあるのか?


2020/12/09
GMT と同じ扱いになり困っていたのは,個人的なコードの i_drawlg.hxx
今日のファイルを求める所で 24*60*60 を加えることで対応.


2022/06/15 DS116 entware
entware の更新で正しく動作する様になった.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

NAS の再起動コマンド

SSH 接続 した NAS のシャットダウンと再起動のコマンド.
QNAP NAS の SSH 接続を有効にする設定
以前 Synology NAS では sudo shutdown -h now などと書いた.
その後 ASUSTOR NAS や QNAP NAS が増えたので,それらを含めたまとめ.
保有している 3 つの NAS でどれも使えるのは,シャットダウンは poweroff ,再起動は reboot
Synology NAS ,ASUSTOR NAS では sudo poweroff と sudo reboot .
QNAP NAS では admin で入って poweroff と reboot .


https://jml.mish.work/various/nas.html

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

FBX SDK サンプルのビルド

FBX SDK 付属のサンプルをビルドしようと思い ヘルプ を見て同様に操作しようとするが,プロジェクトファイル(*.vcxproj)が見当たらない?
…\FBX\FBX SDK\ 以下を新しいものから順に見ると,2019.0 には vcxproj が存在している.
FBX SDK 2019.0 samples
c:\Program Files\ 以下はあまり汚したくないので,..\FBX SDK\2019.0\ 以下を E: ドライブにコピー.
最初 include や lib などはなくても良いかと思ったが,vcxproj での追加のインクルードやライブラリが相対位置の指定になっているのでそのままコピー.
FBX SDK 2019.0 サンプル vcxproj
コピーした …\2019.0\samples\ に「空のソリューションファイル」を作成.
ソリューションに幾つかのプロジェクトを追加してビルド.
FBX SDK 2019.0 ExportScene03


FBX SDK を使用する設定

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

T90Chi Windows Update その後 – 2

先日 T90Chi に Win10 x86 をインストール できたが,タッチパネルや「Fn」キーを押しながらの操作(ボリュームや画面の明るさ)ができないでいた.
ドライバ類をを入れなければならないのはわかっていたが,見当たらない?と思いそのままに.
次のページに入り「OSを選択してください」で「Windows 10 32-bit」を選択.
https://www.asus.com/jp/supportonly/T90CHI/HelpDesk_Download/
ASUS T90Chi ドライバ ダウンロードページ
「すべてを表示する」を選択しないと表示されないものがいっぱいあった.


その中の「SOC Driver Package」が必要だった.
他にも「ASUS Live Update Utility」をダウンロードしてインストール.
「SOC Driver Package」のインストールで最初失敗した?が,再起動後やり直してうまくいった.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 4 人中 3 人がこの 投稿 は役に立ったと言っています。

NAS の SSH 接続設定

Synology NAS
「コントロールパネル」-「端末とSNMP」-「ターミナル」タブ
Synology NAS SSH 設定


QNAP NAS
「コントロールパネル」-「ネットワークとファイル」-「Telnet/SSH」
QNAP NAS SSH 設定


ASUSTOR NAS
「サービス」-「端末」-「SSH」
ASUSTOR NAS SSH 設定


Win10 の「コマンド プロンプト」から次の様なコマンドで接続できる.
ssh -l Iwao as5202t
Win10 コマンド プロンプトから SSH 接続


2021/03/31
ポート番号は 22 から他のものに変更して設定してください.例えば 54322 など.
その場合,ssh -p 54322 -l Iwao as5202t の様に接続します.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

CListBox などのオーナードロー

リストスクロール時,動作が逆に見える現象の調査のため調べたこと.


WinCore.cpp CWnd::OnMeasureItem での CtlType の値

/*
 * Owner draw control types
 */
#define ODT_MENU        1
#define ODT_LISTBOX     2
#define ODT_COMBOBOX    3
#define ODT_BUTTON      4
#if(WINVER >= 0x0400)
#define ODT_STATIC      5
#endif /* WINVER >= 0x0400 */
/*
 * Listbox Styles
 */
#define LBS_NOTIFY            0x0001L
#define LBS_SORT              0x0002L
#define LBS_NOREDRAW          0x0004L
#define LBS_MULTIPLESEL       0x0008L
#define LBS_OWNERDRAWFIXED    0x0010L
#define LBS_OWNERDRAWVARIABLE 0x0020L
#define LBS_HASSTRINGS        0x0040L
#define LBS_USETABSTOPS       0x0080L
#define LBS_NOINTEGRALHEIGHT  0x0100L
#define LBS_MULTICOLUMN       0x0200L
#define LBS_WANTKEYBOARDINPUT 0x0400L
#define LBS_EXTENDEDSEL       0x0800L
#define LBS_DISABLENOSCROLL   0x1000L
#define LBS_NODATA            0x2000L
#if(WINVER >= 0x0400)
#define LBS_NOSEL             0x4000L
#endif /* WINVER >= 0x0400 */
#define LBS_STANDARD          (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
// Measure item implementation relies on unique control/menu IDs
void CWnd::OnMeasureItem(int /*nIDCtl*/, LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
	if (lpMeasureItemStruct->CtlType == ODT_MENU)
	{
	//	...
	}
	else
	{
		CWnd* pChild = GetDescendantWindow(lpMeasureItemStruct->CtlID, TRUE);
		if (pChild != NULL && pChild->SendChildNotifyLastMsg())
			return;     // eaten by child
	}
	// not handled - do default
	Default();
}

GetDescendantWindow で求めた pChild が NULL のため CListBox::OnChildNotify から MeasureItem が呼ばれない?
呼ばれた時の lpMeasureItemStruct->itemHeight は,ODT_LISTBOX は 18 ,ODT_COMBOBOX は 20 .
デバッガで高さを設定すると,その高さになる.
OWNERDRAWVARIABLE は項目ごとに呼ばれるが,OWNERDRAWFIXED の時はうまくない?


結局,VC 6 などの場合にそうなる(逆にスクロール)様子.
コモンコントロール Ver.6 を使う様にすることで回避できる.
コモンコントロール Ver.6 の指定
VC 6 exe などの場合は (VC6_app).exe.manifest ファイルを用意する.
視覚スタイルを有効にする

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

T90Chi Windows Update その後

以前 Windows Update で,再起動を繰り返す状態になり そのままだった.
その後,幾つかの方法を試してみたが,BIOS 画面に入れずそのままとなっていた.
その時,音量の「-」と「電源ボタン」の同時長押しで起動すれば良い とあった.が,うまく入れないでいた.


久しぶりに調べてみると,USB キーボードを接続すれば良いとあったので試すとうまく BIOS 画面に入れた.
BIOS の起動は「F2」または「Delete」.「ESC」を押したときは「Please select boot device:」となる.
ESC を押して起動
F2 を押して起動
また,同じ様な状況になった人の記事も幾つかある.
ここまでは,昨日見つけた情報.


キーボード,マウス,Win10 インストール用 USB メモリ を接続して「ESC」を押して起動.
Win10 インストール用 USB メモリも接続して起動
インストールを進めて…
上の「アップグレード」は選択してもその先に進めない.「カスタム」を選択.
「インストールの種類」で「カスタム」を選択
4つのパーティションを削除.
パーティションを「削除」
「次へ」.
「次へ」を選択するとインストールが始まる
ライセンス認証は以前のものがそのまま引き継がれたみたい.
ライセンス認証
まだ設定は足りないが,何とか使えるようにはなった.



T90Chi ドライバのインストール

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

ドライブ名からリモート名に

ネットワークドライブ名から UNC での表現に変換するコード.

#include	<clocale>
#include	"i_trace.hxx"

//#include	<winnetwk.h>
#pragma		comment	(lib,"mpr.lib")

tstring	W_get_remote_name	(LPCTSTR path_)
{
	tstring	dpath = path_ ;
	if (dpath.size() < 2)		{	return	dpath ;		}
	tstring	drive = dpath.substr(0,2) ;
	tstring	_path = dpath.substr(2) ;
	tstring	remote_path ;
	if (drive.length() == 2) {
		if (drive[1] == _T(':')) {
			u_16	d_t  = ::GetDriveType(drive.c_str()) ;
			if (d_t == DRIVE_REMOTE) {
				DWORD	buf_size = MAX_PATH ;
				tstring	remote_name ;
				remote_name.resize(buf_size+1) ;
				::WNetGetConnection(drive.c_str(),&remote_name[0],&buf_size) ;
				if (!remote_name.empty()) {
					remote_path = remote_name.c_str() + _path ;
					}
				}
			}
		}
	if (remote_path.empty())	{	return	dpath ;		}
	return	remote_path ;
	}

bool	Test	(void)
{
	for (long index=0 ; index<26 ; index++)	{
		tstring	drv  ;
				drv += TCHAR(_T('A')+index) ;
				drv += _T(":\\") ;
	//	if (index%2 == 0)
		{
			u_16	d_t  = ::GetDriveType(drv.c_str()) ;
			if (d_t == DRIVE_REMOTE) {
				drv += _T("*.*") ;
				v_tstring	files = ::EnumFiles(drv.c_str()) ;
				if (files.size() > 0) {
					drv = files[0] ;
					}
				}
			}
		drv += _T("                                      ") ;
		tstring	info = drv.substr(0,20) + _T("\t") + W_get_remote_name(drv.c_str()) ;
		{
			std::tout << info << std::endl ;
			}
		}
	return	true ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		::Test() ;
		}
	return	0 ;
	}

WNetGetConnection と net use
net use 」とコマンド入力することで似た様なことを確認できる.


管理者で起動した PowerShell の Get-SmbConnection で SMB のバージョンを確認できる.
ファイル共有で使われている SMB のバージョンを見る
Get-SmbConnection

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

QNAP NAS Photo Station

QNAP NAS の Photo StationQphoto
インストールはしてみたが,他の NAS と比べると設定が難しい?
Qphoto メニュー
スマートフォンの写真のバックアップの設定がわからない.
実体が NAS 上のどこかも不明.何か設定が足らないのか?


AppCenter で新しくインストールしたり更新する時は LAN 2 のケーブルを抜かないとうまく動作しない.
他メーカの NAS は,デフォルトゲートウェイの設定でうまくいっている.


2021/01/29 QNAP NAS で写真のバックアップ
2021/02/03 QNAP NAS での写真管理

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

ASUSTOR NAS Photo Gallery

今度は ASUSTOR NAS の Photo GalleryAiFoto
Photo Gallery 3 Beta も存在し,その場合は AiFoto 3
AiFoto
上が AiFoto ,下は AiFoto 3 .
AiFoto 3 では,前バージョンでの保存場所 \\AS5202T\PhotoGallery と,新しい保存場所の \\AS5202T\Home\MyPhoto が見える.
スクリーンショットなどはバックアップされない?


2020/11/21
外から VPN で接続してみると,Synology NAS と QNAP NAS は大丈夫だが ASUSTOR NAS は見えない.
ファイアウォールの設定でガードがかかっていたので,VPN 接続の場合通る様に変更.
ADM を起動して「設定」-「ADMディフェンダー」-「追加」.
ADM ディフェンダー VPN 接続時の IP アドレス追加

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

Synology NAS Photo Station

スマートフォンを変えたことで「WD Cloud」アプリが使えなくなった?
それならばと思い,同じ様な目的で使えるものを Synology NAS で設定してみた.


「パッケージセンター」で「Photo Station」をインストール
インストール後のアイコンのクリックや次の様な入力で Photo Station を起動できる.
https://ds116/photo/
実体は \\DS116\photo に置かれる.
Synology NAS Photo Station  \\DS116\photo\


今度はスマートフォンでの「DS photo」の設定.
この時わかり難かったのが「バックアップ先」の指定方法.
アルバム(PC で言うフォルダ)を作成してそれを選択するのがわかり難い.
DS photo バックアップ先の指定
チェックボックスの存在がすぐにはわからなかった.


旧スマートフォンの moto g5 にも DS photo を設定.
PC で見ると,多くの jpg の更新日時が 2019/11/08 15:40 から 15:50 になっている.
原因は,この頃内蔵メモリの空きが少なくなり SD カードに移した ためと思われる.
Photo Station や DS photo では,画像ファイルに持っている撮影日時を使用しているので特に問題ない.
2 つの壊れた jpg があったため,これらのファイルのアップロードで何度もリトライして進まなかった.
一度アップロードを止めて,ファイルを削除することで対応.
壊れた jpg は,撮影時容量不足で途中までしか保存できなかった不完全な画像ファイル.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

std::vector のコピーで実行時エラー

std::vector のデータ vf3a をコピーしようとして実行時エラー.

---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!
Program: c:\Temp\Test\T_gonsa\T_cmb_f\debug.080\T_cmb_f.exe
File: c:\program files (x86)\microsoft visual studio 8\vc\include\vector
Line: 741
Expression: vector subscript out of range
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
中止(A)   再試行(R)   無視(I)   
---------------------------

原因は vf3a のサイズが 0 .
std::vector のサイズが 0 で実行時エラー
vf3a.size() が 0 より大きい時のみコピーする様に変更しなければならない.

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

NAS 上で OpenMP ?

今まで Windows 上で動かしていた OpenMP 対応のコードを,NAS 上で…
QNAP NAS 上にソースをコピーしてコンパイルすると

[Iwao@TS253D T_cmb_f]$ g++ T_cmb_f.cpp -Wall -fopenmp
In file included from T_cmb_f.cpp:12:0:
/share/Public/CloudD/GoogleD/Develop/_.SRC/Test/t_g3d_et.hpp:12:10: fatal error: omp.h: No such file or directory
 #include <omp.h>
          ^~~~~~~
compilation terminated.
[Iwao@TS253D T_cmb_f]$ 

もう少し単純なコードで…

#ifdef		_OPENMP
#include	<omp.h>
#endif

#include	<clocale>
#include	<iostream>
#include	"i_define.hxx"

bool	Test	(void)
{
	#ifdef	_OPENMP
		#pragma	omp	parallel for
	#endif
	for (long index=0 ; index<20 ; index++)	{
		#ifdef	_OPENMP
			#pragma	omp	critical	(wait)
		#endif
		std::cout << index << std::endl ;
		}
	return	true ;
	}

int	_tmain	(int argc,TCHAR* argv[])
{
	_tsetlocale(LC_ALL,_T("")) ;
	{
		::Test() ;
		}
	return	0 ;
	}
[Iwao@TS253D T_cmb_f]$ cd ../T_omp/
[Iwao@TS253D T_omp]$ g++ T_omp.cpp -Wall -fopenmp
T_omp.cpp:10:10: fatal error: omp.h: No such file or directory
 #include <omp.h>
          ^~~~~~~
compilation terminated.
[Iwao@TS253D T_omp]$

NAS OpenMP コンパイルで "fatal error: omp.h: No such file or directory"


Raspberry Pi で同様に行うと問題ない.
Raspberry Pi 上で OpenMP コンパイル


これとは直接関係ないが,
普通にコンパイルした T_cmb_f を QNAP NAS で実行すると,CPU などの温度が正しく表示されない状態に陥った.



2021/05/24
Ubuntu Linux Station ではうまく動作する.
Linux Station OpenMP
Linux Center でも動作する.
Linux Center OpenMP

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

3D データの読み書きの時間

3D データを保持するために,幾つかの形式での読み書きの時間を計測.

bool	T_s_a_l	(const GonsA& gnsa_,LPCTSTR pathName)
{
	GonsA	gnsa = gnsa_ ;
	double	slt = 0 ;
	double	s_t = 0 ;
	double	l_t = 0 ;
	{	//	save
		ElapseTime	et ;
		::GonsA_To(gnsa,pathName) ;
		s_t = et.GetElapse() ;
		}
	{	//	load
		ElapseTime	et ;
		GonsA	ga = ::To_GonsA(pathName) ;
		l_t = et.GetElapse() ;
		}
	{
		slt = s_t + l_t ;
		}
	std::tout << ::Path_GetExtLow(pathName) 
		<< _T("\t") << slt << _T("\t") << l_t << _T("\t") << s_t 
		<< std::endl ;
	return	true ;
	}
file ? =\\DS116\public\...\123test-layer2\123test-layer2.3ds
ac      1.192   0.711   0.481
imo     4.206   3.195   1.011
x3d     2.213   0.461   1.752
wrl     0.831   0.55    0.281
3ds     0.571   0.37    0.201
ix3     1.853   1.092   0.761
ply     3.114   1.852   1.262
nxr     1.623   0.812   0.811
stl     0.2     0.15    0.05
ipl     4.947   4.436   0.511
file ? =\\DS116\public\...\123test-layer2\123test-layer2.3ds
ac      1.202   0.711   0.491
imo     4.016   3.065   0.951
x3d     0.751   0.461   0.29
wrl     0.871   0.601   0.27
3ds     0.511   0.291   0.22
ix3     1.792   1.021   0.771
ply     3.145   1.923   1.222
nxr     1.512   0.701   0.811
stl     0.2     0.15    0.05
ipl     4.867   4.346   0.521
file ? =\\DS116\public\...\9LM-2U-J8F8B-3DLJ.001\9LM-2U-J8F8B-3DLJ.stl
ac      16.214  9.504   6.71
imo     100.935 93.545  7.39
x3d     10.004  6.129   3.875
wrl     12.849  9.073   3.776
3ds     27.149  0.301   26.848
ix3     72.023  38.485  33.538
ply     77.751  62.049  15.702
nxr     21.912  9.974   11.938
stl     31.345  30.784  0.561
ipl     1893.04 1886.52 6.519

file ? =\\AS5202T\Home\gcc_test\Test\t_linux\3D\T_s_a_l\n2950x2450mm.dae
ac      1.011   0.551   0.46
imo     2.624   2.013   0.611
x3d     1.031   0.33    0.701
wrl     0.772   0.511   0.261
3ds     0.881   0.511   0.37
ix3     2.053   1.182   0.871
ply     2.543   1.502   1.041
nxr     1.443   0.471   0.972
stl     0.41    0.35    0.06
ipl     19.458  18.917  0.541
file ? =\\AS5202T\Home\gcc_test\Test\t_linux\3D\T_s_a_l\n2950x2450mm.dae
ac      1.012   0.551   0.461
imo     2.613   2.023   0.59
x3d     0.751   0.33    0.421
wrl     0.731   0.47    0.261
3ds     0.841   0.421   0.42
ix3     2.063   1.172   0.891
ply     2.623   1.652   0.971
nxr     1.593   0.491   1.102
stl     0.41    0.35    0.06
ipl     18.267  17.746  0.521
file ? =\\AS5202T\Home\gcc_test\Test\t_linux\3D\T_s_a_l\133118.x3d
ac      18.266  8.762   9.504
imo     55.18   45.175  10.005
x3d     19.888  6.799   13.089
wrl     19.268  14.681  4.587
3ds     15.172  3.165   12.007
ix3     48.259  24.765  23.494
ply     69.459  38.655  30.804
nxr     21.321  6.74    14.581
stl     15.943  15.102  0.841
ipl     1290.08 1282.34 7.741

* この結果は私のコードでの時間で,一般的なコードとは異なると思う.
3D データの読み書きの時間


2020/11/11

'\\testxp\documents\Develop\VC_Test\T_gonsa\T_cmb_f'

file ? =\\Z170S0\Temp\i_Tools.tmp\T_cmb_f\20201111\133118.x3d
x3d     9.422   5.203   4.219
ipl     303.235 296.594 6.641
wrl     8.016   3.266   4.75
ix3     22.766  8.329   14.437
stl     5.687   5.265   0.422
ply     32.875  17.844  15.031
3ds     5.204   1       4.204
ac      7.733   4.062   3.671
mqo     165.907 162.438 3.469
nxr     11.812  5.047   6.765
imo     26.437  19.484  6.953

ipl     20.437  9.25    11.187
ply     34.625  13.844  20.781
stl     3.359   0.922   2.437
x3d     89.297  30.25   59.047
mqo     47.781  0       47.781
nxr     108.609 43.046  65.563
ix3     294.405 171.546 122.859
wrl     99.313  54.297  45.016
ac      56.454  12.922  43.532
imo     3057.28 3007.03 50.25
3ds     189.515 117.265 72.25

ipl     418.797 407.344 11.453
ix3     27.75   8.078   19.672
ply     43.546  23.093  20.453
x3d     20.391  7.485   12.906
ac      15.406  6.453   8.953
nxr     13.173  5.313   7.86  
stl     6.656   5.125   1.531
wrl     13.767  7.282   6.485
imo     52.499  37.187  15.312
mqo     304.547 294.406 10.141
3ds     9.313   1.172   8.141

file ? =

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。