17 753 889 197 660 635 632
数え上げ方法の解説YouTubeビデオ より入門的な解説「6次魔方陣を数え上げた話」
この値は数え上げを2回行って確認されています。 数え上げはクラウドサービスが提供する多数のGPUを利用して行われました。 使用された GPUの数やモデルは一定ではありませんが、 最初の数え上げには GeForce RTX-4090 で 80,000時間相当の延べ時間を要し、 2回目の数え上げには、性能改善されたプログラムを使って延べ 54,000時間を要しました。
2回目の数え上げを行うことにより、2023年7月に発表した最初の結果 17 753 889 189 701 384 304 は間違っていることがわかりました。 訂正の詳細については次の節をご覧ください。
本結果はこれまでに報告されている以下の統計的な推定値と整合しています。
1.8(2)・1019[1], 1.7745(16)·1019[2], 1.775392(12)·1019[3], 1.77543(73)·1019[4].
この数え上げを遂行する上で、千を超えるGPUサーバのインスタンスが使用されましたが、そのいくつかは残念なことに問題を抱えており、誤った結果を出しました。そのような誤りを発見し訂正するために、すべての小計は少なくとも2回計算され、不一致が起きたときにはさらに訂正のための計算が追加されました。訂正が必要となったケースは以下の2つです。
徹底した検算のなかで、あるインスタンスの結果が正しくないことが発見されました。そのインスタンスは2つのRTX-4090を備えており、約60時間稼働して 3,771個の小小計を生成しました。それらの小小計のうち12個が間違っていましたが、間違っていた答はすべて、2つのRTX-4090のうちの特定の一つだけから生成されていました。このような間違いが論理的な間違いやプログラミングエラーによって起こるとは考えにくく、ハードウェアの不具合が疑われます。
訂正の結果、総計は 960(40×24)増えました。
また別のインスタンスに問題がみつかりました。そのインスタンスは一つのRTX-4090を備え、およそ1ヶ月にわたって約 19,000個の小小計を生成しました。それらの小小計のうち、6つが正しくありませんでした。すべての間違った答はこのインスタンスの稼働時間の最後の1時間に生じており、誤った答を生成するようになった後、インスタンスのGPUは “invalid memory access”というエラーメッセシージとともに使えなくなりました。
訂正の結果、総計は 7 959 250 368 (331 635 432 x24)増えました。
6次魔方陣の総数は膨大であるため、魔方陣全体の集合を細かい小集合に分けて 数え上げます。小集合の定義と小集合ごとの小計を以下に掲載します。
CUDAプログラム (corrected on 2023.11.28 and updated on 2024.05.04)
nvcc -O3 -arch=sm_60 -maxrregcount=40 -Wno-deprecated-declarations ms.cu -lcrypto -DnoMD5 オプションをつけてください。その場合 -Wno-deprecated-declarations と -lcrypto は不要です。-DN=orderで次数を指定します。./a.out./a.out dummy 代表魔方組(16進数) ./a.out dummy1 代表魔方組(16進数) dummy2 2番目に大きい魔方組(16進数) pthreadプログラム (updated on 2023.09.18)
gcc -O3 -DNTH=スレッド数 ms.c -lpthread -lcrypto-DnoMD5 と -DN=次数 は CUDA版と同じ。2回目の数え上げでは、魔方陣の数と同時に準魔方陣の数も数えました。その結果は、全く異なる手法で数えられた A. Ripattiによる結果[5]と一致しています。 この一致は2つの手法の正しさを相互に検証しあうものであり、使用されたリソースの健全さを証明するものです。 準魔方陣の小計を掲載します。
有益な議論と示唆、激励を与えてくれた Walter Trump氏に感謝します。彼は私の手法を検討し、結果の一部を独自のプログラムで検証してくれました。彼はまた、2回目の数え上げにおいて準魔方陣を数えるよう提案し、私がこのプロジェクトを完遂するよう励ましてくれました。彼のウェブサイト Notes on Magic Squares and Cubesは魔方陣に関連するトピックスの良いまとめになっています。